我正在使用 Cython 的编译器指令(http://docs.cython.org/en/latest/src/reference/compilation.html#globally)。
$ cat temp.pyx
# cython: language_level=3
print("abc", "def", sep=" ,") # invalid in python 2
编译:
$ cythonize -i world_dep.pyx
Error compiling Cython file:
------------------------------------------------------------
...
# cython: language_level=3
print("abc", "def", sep=" ,") ^
------------------------------------------------------------
temp.pyx:4:23: Expected ')', found '='
所以language_level指令没有得到尊重。因此,cythonize 最终使用 Python 2 语义,并且由于上面的 print 语句在 Python 2 中无效而引发错误。
但是,包括任何 Python 语句都会使这项工作:
$ cat temp.pyx
# cython: language_level=3
import os
print("abc", "def", sep=" ,")
编译和执行:
$ cythonize -i temp.pyx; python -c "import temp"
abc, def
知道 import 语句如何使language_level受到尊重吗?
我也在Cython GitHub 存储库上提出了同样的问题?