摆脱 pyximport
Get rid of pyximport
我正在尝试使用 Cython。我使用 setup.py 进行构建,而不是让 pyximport 执行此操作。但是,每次我导入我的模块时,似乎都调用了 pyximport。 Pyximport 无法构建,一切都崩溃了。
我使用 Spyder。我的项目中没有对 pyximport 的单一引用,但 Spyder 似乎并不关心并一直调用 pyximprot。
我从命令 window(Spyder 外部)调用了我的程序,它 运行 很好。
我怎样才能摆脱对 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"]
问题出现在 Spyder 中,因为包的初始化实际上在文件 utils/site/sitecustomize.py.
中加载 pyximport
并调用 pyximport.install()
其他人在 GitHub 上对此进行了投诉:
一个不优雅的解决方案(例如,不会在 spyder 的更新后继续存在)但应该可行的是手动编辑 spyder 安装中的 sitecustomize.py 文件并删除 [=12= 下的部分]
(这里是 Spyder 维护者) 这个问题已在我们于 2018 年 3 月发布的 3.2.8 版本中修复。
我正在尝试使用 Cython。我使用 setup.py 进行构建,而不是让 pyximport 执行此操作。但是,每次我导入我的模块时,似乎都调用了 pyximport。 Pyximport 无法构建,一切都崩溃了。
我使用 Spyder。我的项目中没有对 pyximport 的单一引用,但 Spyder 似乎并不关心并一直调用 pyximprot。
我从命令 window(Spyder 外部)调用了我的程序,它 运行 很好。
我怎样才能摆脱对 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"]
问题出现在 Spyder 中,因为包的初始化实际上在文件 utils/site/sitecustomize.py.
中加载pyximport
并调用 pyximport.install()
其他人在 GitHub 上对此进行了投诉:
一个不优雅的解决方案(例如,不会在 spyder 的更新后继续存在)但应该可行的是手动编辑 spyder 安装中的 sitecustomize.py 文件并删除 [=12= 下的部分]
(这里是 Spyder 维护者) 这个问题已在我们于 2018 年 3 月发布的 3.2.8 版本中修复。