मैं साइथन का उपयोग करने की कोशिश कर रहा हूँ। मैं setup.py का उपयोग करता हूं और pyximport को ऐसा करने देने के विरोध में निर्माण करता हूं। हालांकि, हर बार जब मैं अपना मॉड्यूल आयात करता हूं तो ऐसा लगता है कि pyximport कहा जाता है। Pyximport निर्माण करने में विफल रहता है और सब कुछ क्रैश हो जाता है।

मैं स्पाइडर का उपयोग करता हूं। मेरे पास अपने प्रोजेक्ट में pyximport का एक भी संदर्भ नहीं है, लेकिन स्पाइडर परवाह नहीं करता है और pyximprot को कॉल करता रहता है।

मैंने अपने प्रोग्राम को कमांड विंडो (स्पाइडर के बाहर) से बुलाया और यह ठीक चला।

मैं pyximport पर कॉल से कैसे छुटकारा पा सकता हूं? या कुछ और हो रहा है?

import c_result
Traceback (most recent call last):

  File "<ipython-input-2-3e92d1c50179>", line 1, in <module>
    import c_result

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyximport\pyximport.py", line 458, in load_module
language_level=self.language_level)

  File "C:\Users\xxxR\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyximport\pyximport.py", line 231, in load_module
raise exc.with_traceback(tb)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyximport\pyximport.py", line 215, in load_module
inplace=build_inplace, language_level=language_level)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyximport\pyximport.py", line 191, in build_module
reload_support=pyxargs.reload_support)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\pyximport\pyxbuild.py", line 102, in pyx_to_dll
dist.run_commands()

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\distutils\dist.py", line 955, in run_commands
self.run_command(cmd)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\distutils\dist.py", line 974, in run_command
cmd_obj.run()

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 185, in run
_build_ext.build_ext.run(self)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\distutils\command\build_ext.py", line 339, in run
self.build_extensions()

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 192, in build_extensions
ext.sources = self.cython_sources(ext.sources, ext)

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\site-packages\Cython\Distutils\old_build_ext.py", line 327, in cython_sources
self.mkpath(os.path.dirname(target))

  File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\distutils\cmd.py", line 338, in mkpath
dir_util.mkpath(name, mode, dry_run=self.dry_run)

 File "C:\Users\xxx\AppData\Local\Continuum\Anaconda3\lib\distutils\dir_util.py", line 74, in mkpath
"could not create '%s': %s" % (head, exc.args[-1]))

ImportError: Building module c_result failed: ["distutils.errors.DistutilsFileError: could not create 'C:\\Windows\\system32\\config\\systemprofile': Kan ikke opprette en fil når filen allerede finnes\n"]
6
mortysporty 26 सितंबर 2017, 12:19

2 जवाब

सबसे बढ़िया उत्तर

समस्या स्पाइडर में दिखाई दी क्योंकि पैकेज का इनिशियलाइज़ेशन वास्तव में लोड होता है pyximport और कॉल pyximport.install(), फ़ाइल में utils/site/sitecustomize.py

अन्य ने इसके बारे में GitHub पर शिकायत की है:

एक समाधान जो सुरुचिपूर्ण नहीं है (उदाहरण के लिए, स्पाइडर के अपडेट से नहीं बचेगा) लेकिन जो काम करना चाहिए वह है मैन्युअल रूप से अपने स्पाइडर इंस्टॉलेशन में sitecustomize.py फ़ाइल को संपादित करना और if HAS_PYXIMPORT: के तहत अनुभाग को हटाना।

7
Pierre de Buyl 26 सितंबर 2017, 16:13

(यहां स्पाइडर मेंटेनर) यह समस्या मार्च 2018 को जारी हमारे 3.2.8 संस्करण में ठीक की गई थी।

4
Carlos Cordoba 13 अप्रैल 2018, 00:22