[英]Package can't import cython library in the egg
我可以从其文件夹中使用程序包,但是一旦将其安装为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代码被编译并创建fastcode.pyd
(或fastcode.so
在Linux上) mypkg
通过配置文件的指示文件夹。
现在,如果我转到mypkg
文件夹并运行python
,则可以安全地import mypkg.myfile
。 但是,当我从其他某个文件夹运行python(以便使用已安装的.egg
文件)时,出现错误ImportError: No module named fastcode
。
我试图添加
package_data={
'mypkg': ['*.pyd', '*.so']
},
到setup.py
,这会将fastcode.pyd
添加到egg文件(通过浏览解压缩版本),但是对于导入仍然不起作用。
我发现了如何解决此问题:必须删除setup.cfg
。 对于那些有兴趣谁,问题是,随着新的设置中, .egg
文件还包含生成fastcode.py
文件, fastcode.pyc
文件,而不仅仅是fastcode.pyd
文件(我将通过查看预计mypkg
后使用仅存在.pyd
文件的先前设置进行编译)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.