我在编译不同包中的cdef-ed类型时遇到问题,我在cython文档中找不到解释.
我在我的python src树的根目录中有这个setup.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = [
Extension("flink.pytk.defs.FragIdx",
sources = ["flink/pytk/defs/FragIdx.pyx"]),
Extension("flink.pytk.fragments.STK_idx",
sources = ["flink/pytk/fragments/STK_idx.pyx"])
]
)
Run Code Online (Sandbox Code Playgroud)
FragIdx是一个cdef-ed类型,在flink/pytk/defs/FragIdx.pyx中定义:
cdef class FragIdx:
cdef public FragIdx parent
cdef public FragIdx root
cdef public tuple label
...
Run Code Online (Sandbox Code Playgroud)
STK_idx是FragIdx的扩展,在flink/pytk/fragments/STK_idx.pyx中定义:
from flink.pytk.defs.FragIdx import FragIdx
cdef class STK_idx(FragIdx):
...
Run Code Online (Sandbox Code Playgroud)
当我尝试使用帖子开头列出的setup.py进行编译时,FragIdx编译得很好,但是当涉及到STK_idx时,我收到以下错误消息:
flink/pytk/fragments/STK_idx.pyx:5:5: 'FragIdx' is not a type name
Run Code Online (Sandbox Code Playgroud)
请注意,我的源树的根目录列在$ PYTHONPATH中.
我真的很感激,如果有人能对此有所了解,非常感谢!
丹尼尔