Я обновил свой Cython до версии 0.23.4, и мой код теперь приводит к AttributeError, когда я помещал файлы .pyx и .pxd в подкаталоги моей рабочей директории , Минимальный пример, содержащий ошибку следующим образом:Cython 0.23.4 AttributeError, когда .pyx и .pxd файлы в подкаталоге
Главная питон файл в рабочем каталоге:
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 (т.е. в подкаталоге дароносицы /):
cdef class X:
def __init__(self,var):
self.var = var
PXD /X.pxd (т. Е. В подкаталоге pxd /):
cdef class X:
cdef public int var
Running Main.py дает fo Ошибка llowing:
AttributeError: 'X.X' object has no attribute 'var'
Обратите внимание, код работает отлично, если я переместить файлы X.pyx и X.pxd в мой рабочий каталог. Но это очень неудобно из-за большого количества файлов.
Что я могу сделать, чтобы запустить код, имея X.pyx и X.pxd в подкаталогах?
Это, кажется, не разрешает AttributeError. Мой тестовый код работал отлично до обновления Cython. Поэтому я думаю, что проблема должна быть в сгенерированных файлах .c. – Rijk
Рабочий пример, который вы опубликовали, запускается без предупреждения на моей машине, с тем, что я предложил, и я использую Cython 0.23.4. Трудно догадаться, в чем проблема в вашем фактическом коде.Возможно, вы можете удалить файлы '.c' и перекомпилировать все это. Это должно решить проблему. Если нет, вы всегда можете сообщить об ошибке в списке рассылки Cython, если вы считаете, что это проблема с версией 0.23.4. – romeric