来自不同已安装软件包的pxd软件包定义

问题描述

我有一个安装了cython扩展的python模块。现在,我正在编写第二个(不同的)cython模块,该模块想从已安装的cython模块导入扩展。但是,它找不到第一个模块的定义文件

一个模块的.../python3.8/site-packages/plexim[version]/EGG-INFO/SOURCES.txt如下:

setup.py
...
plexsim/models.cpp
plexsim/models.pxd
...

pxd与模块包装在一起时看起来不错。

在另一个模块中,我想从models.pxd导入pxd。但是,当我尝试安装其他扩展模块时,执行此操作时找不到扩展定义

from plexsim.models cimport *

如何正确打包数据,以便其他模块从已安装的模块中看到定义?

我的setup.py看上去很像

setup(
        package_dir  = {"" : "imi"
                        },namespace_packages     = find_namespace_packages (include = ["imi.*"]),package_data = {"": "*.pxd *.pyx".split(),ext_modules  = cythonize(
                exts,language_level      = 3,compiler_directives = cdirectives,nthreads            = mp.cpu_count(),),\

谢谢

解决方法

经过数小时的调试,我找出了问题所在。在模块中添加__init__.pxd似乎已经解决了该问题。为了将来参考,请注意setuptools是否实际找到pxd文件。