不允许在常量表达式中访问模块

时间:2018-08-01 13:27:48

标签: cython cythonize

我有两个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个外部定义的值/函数。

1 个答案:

答案 0 :(得分:0)

@DavidW向我指出了工作解决方案“ wrap in enum”:

# In intern.pxd
cdef enum test_enum_intern: 
    test = 8

这可行,但是感觉很“奇怪”。如果有人有其他解决方案,欢迎他发布。