我有两个cython文件:
intern.pxd
cdef int test = 8
extern.pyx
cimport intern
cpdef enum test_enum:
test = intern.test
如果我尝试对此进行编译,则会引发以下错误:
Error compiling Cython file:
------------------------------------------------------------
...
cimport intern
cpdef enum test_enum:
test = intern.test ^
------------------------------------------------------------
side_tests\extern.pyx:4:17: Not allowed in a constant expression
我猜这是因为intern.test
的值在编译时未知。我想为此寻求解决方案。不能将intern.pxd
的值导出到extern.pyx
中,因为在实际项目中intern.pxd
包含大约2000个外部定义的值/函数。
答案 0 :(得分:0)
@DavidW向我指出了工作解决方案“ wrap in enum”:
# In intern.pxd
cdef enum test_enum_intern:
test = 8
这可行,但是感觉很“奇怪”。如果有人有其他解决方案,欢迎他发布。