У меня возникают проблемы с компиляцией типов cdef-ed в разных пакетах, и я не мог найти объяснения в документах cython.
У меня есть setup.py в корне моего дерева src python:
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, определенный в flink/pytk/defs/FragIdx.pyx:
cdef class FragIdx:
cdef public FragIdx parent
cdef public FragIdx root
cdef public tuple label
...
И STK_idx является расширением FragIdx, определенным в flink/pytk/fragments/STK_idx.pyx:
from flink.pytk.defs.FragIdx import FragIdx
cdef class STK_idx(FragIdx):
...
Когда я пытаюсь скомпилировать, используя setup.py, указанный в начале сообщения, FragIdx скомпилирован правильно, но когда дело доходит до STK_idx, я получаю следующее сообщение об ошибке:
flink/pytk/fragments/STK_idx.pyx:5:5: 'FragIdx' is not a type name
Обратите внимание, что корневой каталог моего исходного дерева указан в $PYTHONPATH.
Я был бы очень признателен, если бы кто-нибудь мог пролить свет на это, спасибо большое!
Даниэла