我正在使用Cython包装C库。 C库的头文件定义了许多常量,因此在我的cython模块中,我有类似以下内容:
cdef extern from "lib.h":
cdef int CONST_A = 0
cdef int CONST_B = 1
当我编译扩展时,常量在Python中不可用。我试图做这样的事情,但是似乎没有用:
cdef extern from "lib.h":
cdef int CONST_A = 0
cdef int CONST_B = 1
CONST_A = CONST_A
CONST_B = CONST_B
关于如何使这些常量在Python中可用的任何想法?
最佳答案
您说对了,因为Cython似乎有一个洞。
我可以声明cpdef int CONST_C = 3
并编译,但是从Python中看不到。这似乎是一个错误-如果它接受语法,则应该对其进行合理的处理。
似乎确实起作用的一件事是:
cpdef enum:
CONST_A = 0
CONST_B = 1
这可能对您的情况足够好,也可能不够,但是对于许多用例来说,它似乎都可以很好地工作-也许这就是为什么未发现该bug的原因?
关于python - 使用Cython从 header 导出常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31766219/