gpt4 book ai didi

python - Cython 编译器错误

转载 作者:行者123 更新时间:2023-12-02 10:44:02 25 4
gpt4 key购买 nike

关于这个我没能找到太多,但是当我试图用 cython 编译我的一个 python 脚本时,它给了我这个错误:

Error compiling Cython file:
------------------------------------------------------------
...
import traceback #line:24
import bcrypt #line:25
Y =str (os .path .dirname (os .path .abspath (__file__ )))#line:28
IH =open #line:29
IA =str #line:30
IK =print #line:31
^
------------------------------------------------------------

headlessobfu.pyx:29:4: Expected an identifier or literal
Traceback (most recent call last):
File "setup.py", line 5, in <module>
ext_modules = cythonize("headlessobfu.pyx")
File "C:\Users\justi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\Cython\Build\Dependencies.py", line 1026, in cythonize
cythonize_one(*args)
File "C:\Users\justi\AppData\Local\Programs\Python\Python36-32\lib\site-packages\Cython\Build\Dependencies.py", line 1146, in cythonize_one
raise CompileError(None, pyx_file)
Cython.Compiler.Errors.CompileError: headlessobfu.pyx

我没能找到这个错误的确切原因。我能够得到简单的脚本来编译得很好。 python 自己运行得很好。是我的 python 格式有问题吗?

这是我正在运行的命令行参数:

py setup.py build_ext --inplace

如果有人有解决办法请告诉我。谢谢。

最佳答案

默认情况下,Cython 采用 Python 2 语法,即使您使用的是 Python 3(编辑 2021:Cython 3 将改变这一点,默认情况下主要采用 Python 3 语法)。这是您应该创建的最小的完整示例:

cy_print_test.pyx

x = print

如果我用Cython编译它

cython cy_print_test.pyx

我收到了您的错误消息。 print 不是标识符或文字,因为在 Python 2 语法下它是一个特殊语句。

但是,如果我使用 Cython 编译它并设置为使用 Python 3 语法:

cython -3 cy_print_test.pyx

它工作正常 - 在 Python 3 语法下打印是一个函数,所以这很有意义。


获取 Python 3 语法的替代方法是将以下行添加到 .pyx 文件的开头

#cython: language_level=3

或在 setup.py 中将其指定为编译器指令:

from distutils.core import setup
from Cython.Build import cythonize

setup(
ext_modules = cythonize('cy_print_test.pyx', compiler_directives={'language_level': 3}),
)

(请注意,您的 setup.py 也应该构成您问题中最小的完整示例的一部分)

关于python - Cython 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com