Cython文件无法编译
我有一个运行得太慢的巨大Python代码。我不想用C重写我的整个代码,所以我做了一些研究,并且遇到了Cython。我被告知我的Python代码保存为.pyx并创建一个setup.py文件,将“cytonize”我的代码,然后将其编译成C.Cython文件无法编译
然而,当我键入C:/Users/loic/Documents/maido-cython/setup.py build_ext –inplace
我得到一个错误:
Compiling C:/Users/loic/Documents/maido-cython/maido-cython.pyx because it changed.
[1/1] Cythonizing C:/Users/loic/Documents/maido-cython/maido-cython.pyx
Error compiling Cython file:
------------------------------------------------------------
[unprintable code]
------------------------------------------------------------
Documents\maido-cython\maido-cython.pyx:1:0: 'maido-cython' is not a valid module name
Traceback (most recent call last):
File "C:\Users\loic\Documents\maido-cython\setup.py", line 9, in <module>
ext_modules = cythonize("C:/Users/loic/Documents/maido-cython/maido-cython.pyx"),
File "C:\Python27\lib\site-packages\Cython\Build\Dependencies.py", line 934, in cythonize
cythonize_one(*args)
File "C:\Python27\lib\site-packages\Cython\Build\Dependencies.py", line 1056, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: C:/Users/loic/Documents/maido-cython/maido-cython.pyx
下面的代码(maido-cython.py
)和我用(不要担心,我上传它在我自己的谷歌账户)的4个numpy的文件(******_maido_856x512.npy
):https://drive.google.com/drive/folders/0B7P95aWmH4DUek9xcEROb0FQR0E
以下是我在我的设置文件中写道: :
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
from Cython.Build import cythonize
setup(name = "graphique",
ext_modules = cythonize("C:/Users/loic/Documents/maido-cython/maido-cython.pyx"),
)
有人能告诉我我做错了吗?
编辑:
我把你的意见和更改的文件。我也改变了上传的链接:我还有一个问题https://drive.google.com/drive/folders/0B7P95aWmH4DUcFY0X3JycGlacDQ
当我输入C:/Users/loic/Documents/maido/setup.py build_ext –inplace
具有与冒号做“:”
Compiling C:\Users\loic\Documents\maido\maido_cython.pyx because it changed.
[1/1] Cythonizing C:\Users\loic\Documents\maido\maido_cython.pyx
Error compiling Cython file:
------------------------------------------------------------
...
def metFeuForet():
""" propage le feu a toute la foret pour N etape a l'aide de la fonction propageFeu """
path = "C:\Users\loic\Documents\maido"
^
------------------------------------------------------------
Documents\maido\maido_cython.pyx:258:14: Invalid unicode escape '\U'
Traceback (most recent call last):
File "C:\Users\loic\Documents\maido\setup.py", line 9, in <module>
ext_modules = cythonize("C:\Users\loic\Documents\maido\maido_cython.pyx"),
File "C:\Python27\lib\site-packages\Cython\Build\Dependencies.py", line 934, in cythonize
cythonize_one(*args)
File "C:\Python27\lib\site-packages\Cython\Build\Dependencies.py", line 1056, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: C:\Users\loic\Documents\maido\maido_cython.pyx
我没有找到对应的Unicode字符。我应该添加什么?
您可以完美执行一个.py*
文件,其基数名称如a-b
但您不能导入它。
import a-b
无效,因为a-b
不是有效蟒标识符(解释为“负B”)。您的cythonize过程也一样,并且消息足够清晰。
修复:将maido-cython.pyx
重命名为有效的python名称,例如maido_cython.pyx
。
编辑:你的另一个问题,它的另一个经典的问题:
path = "C:\Users\loic\Documents\maido"
\U
被解释为Unicode转义。使用像这样的原始前缀:
path = r"C:\Users\loic\Documents\maido"
你能回答我编辑过的帖子吗?我有另一个问题。 –
@LoïcPoncin完成(这是另一个无关的问题)。请不要进一步编辑您的问题。想想这个页面的未来读者。 –
'maido-cython' =>'maido_cython'。文件名必须是有效的模块名称。 –
另外,请勿使用相同的基本名称命名'.pyx'和'.py'文件。 –
谢谢,我编辑了我的问题,因为我有另一个问题。 –