赛顿康比

2024-09-29 23:24:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我还没有找到很多关于这个的信息,但是当我试图用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格式有问题吗?在

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

^{pr2}$

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


Tags: pathinpyimport脚本os错误line
2条回答

所以这和cython和python格式有关。代码必须完全混淆,没有错误,否则编译器将无法工作。因此,请仔细检查编译器,并在出现错误时将其修复。希望这有帮助。在

默认情况下,Cython采用python2语法,即使使用python3也是如此。以下是您应该创建的最少、完整的示例:

赛欧印花_测试.pyx在

x = print

如果我用Cython编译它

^{pr2}$

我收到了你的错误信息。print不是标识符或文本,因为在python2语法下,它是一个特殊语句。在

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

cython -3 cy_print_test.pyx

它工作得很好-在python3语法下print是一个函数,因此这非常有意义。在


获取Python3语法的另一种方法是将以下行添加到.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也应构成问题中最小、完整示例的一部分)

相关问题 更多 >

    热门问题