19

当使用 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
4

3 回答 3

19

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

#cython: language_level=3

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

于 2016-02-23T16:02:23.213 回答
17

看起来 cython 默认将所有打印视为 python 2 语句。为了使用 python 3 打印功能,您需要从未来的模块中导入它:

from __future__ import print_function

print('hello world',end='')
于 2014-05-10T00:05:54.817 回答
7

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

cython -3 mycode.py
于 2015-09-05T23:56:29.657 回答