【发布时间】:2017-09-15 00:28:06
【问题描述】:
我可以从它的文件夹中使用我的包,但是一旦我将它安装为一个 egg 包,基于 cython 的模块就无法导入。
我有以下包结构
src/
├── mypkg/
│ ├── __init__.py
│ ├── myfile.py
├── cython/
│ ├── fastcode.pyx
setup.py
模块myfile.py 导入import fastcode。在setup.py,我有
setup(
name='mypkg',
version='0.1',
packages=find_packages(where="src"),
package_dir={'':'src'},
cmdclass={'build_ext': build_ext},
ext_modules=df_ext_modules,
)
我也有setup.cfg,
[build_ext]
build-lib=src/mypkg
如果我运行 python setup.py install,cython 代码将被编译并按照配置文件的指示在 mypkg 文件夹中创建 fastcode.pyd(或 Linux 中的 fastcode.so)。
现在,如果我转到mypkg 文件夹并运行python,我可以安全地执行import mypkg.myfile。
但是,当我从其他文件夹运行 python 时(例如使用已安装的 .egg 文件),我收到错误 ImportError: No module named fastcode。
我尝试添加
package_data={
'mypkg': ['*.pyd', '*.so']
},
到setup.py,这会将fastcode.pyd 添加到egg 文件中(通过探索解压缩版本),但仍然无法导入。
【问题讨论】:
标签: python cython setuptools egg