如何解决错误“编译Cython文件时出错”错误?

时间:2016-07-15 01:51:12

标签: python cython

我正在尝试关注此basic cython tutorial。在我的目录中我
- > __ init__.py
- > hello.pyx
- > setup.py

Iniside hello.pyx-

print "Hello World"

在setup.py中

from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize("hello.pyx"))

当我偏爱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和其他)。但从那以后它就不起作用而且给出了上述错误。

我有mingw installed using conda

1 个答案:

答案 0 :(得分:0)

尝试从该目录中删除__init__.py。出于某种原因,在尝试编译时会让cython感到困惑。

您还可以考虑使用pyximport扩展名,例如: 如果您只想从普通的python文件导入.pyx文件,请import pyximport; pyximport.install(),然后import your_module(就像它是正常的.py一样)。 (在后一种情况下,__init__.py不必删除。)