我正在使用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语义,并且由于上面的打印语句在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 存储库上提出了这个问题。