我在cython中有3个代表2个类的文件:
1. ../src/cython/class1.pyx
2. ../src/cython/class1.pxd
3. ../src/cython/class2.pyx
我想将class1
中定义的类导入class2
,以便能够为自定义类使用cython类型。
如果我这样导入class2
,Class1
内部,我无法编译:
from src.cython.class1 cimport Class1
如果我在class2
内导入Class1
,我可以编译,但执行时收到错误No module named 'src.cython.class1'
:
from class1 cimport Class1
我正在setup.py
../
这个问题被标记为一个非常不同的问题的可能重复。我之所以收到这些错误只是因为我错过了__init__.py
文件夹中的cython
。
答案 0 :(得分:2)
目录结构应该是这样的:
../src/cython/class1.pyx
../src/cython/__init__.pxd
../src/cython/class1.pxd
../src/cython/class2.pyx
在class2.pyx中:
from class1 cimport Class1
setup.py应该有:
extensions = [Extension('my_package.cython.class1',
<..>
),
Extension('my_package.cython.class2',
<..>,
),
]
'no module'错误是因为除了需要定义为包的目录之外,目录名与扩展名不匹配。
__init__.pxd
相当于__init__.py
的{{1}}。