Я обновил свой Cython до версии 0.23.4, и мой код теперь приводит к AttributeError, когда я помещаю файлы .pyx и .pxd в подкаталоги моего рабочего каталога. Минимальный пример, содержащий ошибку, выглядит следующим образом:
Основной файл python в рабочем каталоге:
import pyximport;
import os,sys;
pyximport.install()
sys.path.insert(0, os.getcwd()+'/pxd')
sys.path.insert(0, os.getcwd()+'/pyx')
from X import *
xObj = X(5)
pyx/X.pyx (т.е. в подкаталоге pyx/):
cdef class X:
def __init__(self,var):
self.var = var
pxd/X.pxd (т.е. в подкаталоге pxd/):
cdef class X:
cdef public int var
Запуск Main.py дает следующую ошибку:
AttributeError: 'X.X' object has no attribute 'var'
Обратите внимание: код работает нормально, если я перемещаю файлы X.pyx и X.pxd в свой рабочий каталог. Но это очень неудобно из-за большого количества файлов.
Что я могу сделать, чтобы запустить код, имея X.pyx и X.pxd в подкаталогах?