Cython:如何从模块导入全局变量?

Cython: How to import global variables from a module?

具有全局 C 变量的模块:

# mymod.pyx (compiled to mymod.so)
cdef int myvar

如何从另一个文件访问myvar
场景 1:

# myapp.pyx (import module only)
import mymod
print(mymod.myvar) # myvar is Python object, not int

场景 2:

# myapp.pyx (import variable directly)
from mymod import myvar # Error, no such myvar as Python var

场景 3:

# myapp.pyx (import with cimport, needs .pxd file)
from mymod cimport myvar

如果可能,我希望只使用 .pyx 文件。除非别无选择,否则我可能会使用.pxd文件,在这种情况下如何将myvar移动到.pxd文件?

原来模块中的 cdef 个全局变量必须在 .pxd 个文件中。

例如:

# submod.pyx
some code...
# submod.pxd
cdef int myvar
# mod.pyx
cimport submod
print(submod.myvar)
# app.py
import mod