使用 print 函数参数编译 cython 错误

cython error compiling with print function parameters

提问人:mohammad 提问时间:10/4/2013 更新时间:11/13/2019 访问量:5996

问:

使用 Cython 从 HelloWorld.pyx 创建 HelloWorld.c 时,发生以下错误:

    error compiling Cython file:
------------------------------------------------------------
...
print('hello world',end='')
                      ^
------------------------------------------------------------

p21.pyx:1:23: Expected ')', found '='

我创建 helloworld.c 的命令是:

cython3 --embed p21.pyx
python-3.x cython

评论


答:

19赞 uzumaki 5/10/2014 #1

默认情况下,cython 似乎将所有打印视为 python 2 语句。为了使用 python 3 print 函数,您需要从 future 模块导入它:

from __future__ import print_function

print('hello world',end='')
8赞 AkiRoss 9/6/2015 #2

我不知道这是否仍然相关,但就我而言,使用 cython 0.23,要编译 Python3 代码,您必须传递标志。例如-3

cython -3 mycode.py

评论

0赞 tfpf 12/7/2020
在我看来,这是最好的答案,因为它不需要您修改任何源文件。
1赞 DavidW 5/21/2022
在我看来,这不是最好的答案,因为要使用的语言级别是源文件的一个属性。将它放在源文件中要强大得多,然后您永远不会在命令行上忘记它
0赞 AkiRoss 6/29/2022
我同意,即使我建议它作为可能的解决方案,也不是最好的选择。
21赞 YangZi 2/24/2016 #3

Cython 默认使用 Python 2 语义。将语言级别设置为 3,这可以通过以下注释来完成:

#cython: language_level=3

编号: https://cython.readthedocs.io/en/stable/src/reference/compilation.html#compiler-directives