【问题标题】:Cython: How to import global variables from a module?Cython:如何从模块中导入全局变量?
【发布时间】:2021-12-14 05:15:41
【问题描述】:

具有全局 C 变量的模块:

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

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

# 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 文件中?

【问题讨论】:

    标签: python c++ c import cython


    【解决方案1】:

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

    例如:

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

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 2021-10-08
      • 2013-04-02
      • 2017-08-28
      • 1970-01-01
      • 2014-02-18
      相关资源
      最近更新 更多