我在編譯不同包中的cdef-ed類型時遇到了問題,我無法在cython文檔中找到解釋。在不同的包中編譯依賴的pyx文件
我有此setup.py在我蟒SRC樹的根:
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"])
]
)
FragIdx是CDEF-ED型,在定義弗林克/ pytk/DEFS/FragIdx.pyx:
cdef class FragIdx:
cdef public FragIdx parent
cdef public FragIdx root
cdef public tuple label
...
而且STK_idx是FragIdx的延伸,在弗林克定義/ pytk /片段/ STK_idx.pyx:
from flink.pytk.defs.FragIdx import FragIdx
cdef class STK_idx(FragIdx):
...
當我試圖編譯USI納克在文章開頭列出的setup.py,FragIdx編譯沒事,但是當涉及到STK_idx我收到以下錯誤信息:
flink/pytk/fragments/STK_idx.pyx:5:5: 'FragIdx' is not a type name
請注意,我的源代碼樹的根目錄列在$ PYTHONPATH中。
我真的很感激,如果任何人都可以擺脫這一點,非常感謝!
丹尼爾