如何解决错误“编译Cython文件错误”错误?
问题描述:
我正在尝试关注此basic cython tutorial。在我的目录我已经
- > __ init__.py
- > hello.pyx
- > setup.py如何解决错误“编译Cython文件错误”错误?
Iniside hello.pyx-
print "Hello World"
内部setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("hello.pyx"))
当我exceute python setup.py build_ext --inplace
我得到这个错误 -
F:\bots\cython>python setup.py build_ext --inplace
Compiling hello.pyx because it changed.
Cythonizing hello.pyx
Error compiling Cython file:
------------------------------------------------------------
...
^
------------------------------------------------------------
cython:0:0: cython.hello is not available
Traceback (most recent call last):
File "setup.py", line 5, in <module>
ext_modules = cythonize("hello.pyx")
File "C:\Anaconda2\lib\site-packages\Cython\Build\Dependencies.py", line 778,in cythonize
cythonize_one(*args[1:])
File "C:\Anaconda2\lib\site-packages\Cython\Build\Dependencies.py", line 895, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: hello.pyx
它工作过一次,它也生成hello.pyd,但在此之后,我使用conda安装了几个软件包(tensorflow和其他)。但从那时起,它就无法工作,并给出了上述错误。
答
尝试从目录中删除__init__.py
。出于某种原因,在编译时混淆了cython。
您也可以考虑使用pyximport扩展,如: import pyximport; pyximport.install()
,然后import your_module
(好像它是一个正常的.py),如果你只是想从普通的Python文件导入.pyx文件。 (在后一种情况下,__init__.py
不必删除。)