使用cython路径编译pyx pxd文件的工作版本很困难

时间:2018-05-31 20:03:23

标签: python cython setuptools

我在cython中有3个代表2个类的文件:

1. ../src/cython/class1.pyx
2. ../src/cython/class1.pxd
3. ../src/cython/class2.pyx

我想将class1中定义的类导入class2,以便能够为自定义类使用cython类型。

如果我这样导入class2Class1内部,我无法编译:

from src.cython.class1 cimport Class1

如果我在class2内导入Class1,我可以编译,但执行时收到错误No module named 'src.cython.class1'

from class1 cimport Class1

我正在setup.py

运行../

这个问题被标记为一个非常不同的问题的可能重复。我之所以收到这些错误只是因为我错过了__init__.py文件夹中的cython

1 个答案:

答案 0 :(得分:2)

目录结构应该是这样的:

  1. ../src/cython/class1.pyx
  2. ../src/cython/__init__.pxd
  3. ../src/cython/class1.pxd
  4. ../src/cython/class2.pyx
  5. 在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}}。