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
具有全局 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