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

4
我正在尝试跟随这个基本的Cython教程。在我的目录中,我有:
--> __ init__.py
-->hello.pyx
-->setup.py

在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等)。但自那时起,它就无法工作并显示上述错误。
我已经使用conda安装了mingw
1个回答

3
尝试从该目录中删除__init__.py文件。由于某种原因,在尝试编译时,它会使cython感到困惑。
您还可以考虑使用pyximport扩展,例如:import pyximport; pyximport.install(),然后像导入普通.py文件一样import your_module,如果您只希望从普通python文件中导入.pyx文件。(在后一种情况下,不必删除__init__.py文件。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接