【问题标题】:Package a python project that contains a .so library打包一个包含 .so 库的 python 项目
【发布时间】:2020-11-11 02:48:51
【问题描述】:

我想使用this official tutorial打包我的python项目

问题是我的项目使用了 .so 外部库。当我制作一个包并将其导入随机 python 脚本时,我收到此错误:

ModuleNotFoundError: 没有名为“myExternalLib”的模块

我找不到任何关于如何将外部库添加到我的包的教程,我想我没有使用正确的关键字进行搜索。

【问题讨论】:

  • 您链接的指南仅涵盖纯 Python 代码。您需要参考Packaging binary extensions 指南,鉴于该指南不完整,请参阅所有链接。有关如何完成此操作的快速示例,请参阅 this thread
  • 感谢您的指点。我发现了很多实现 C 扩展的好材料。但是在浏览了指南和所有看起来很有趣的链接之后,老实说,我没有发现任何与我的问题相关的内容。
  • 我不想编译扩展。我有一个已经编译的扩展,我想告诉安装文件将它添加到包中。
  • 您可以尝试使用a MANIFEST.in文件强制包含*.so文件。由于它不是可移植的解决方案,因此不保证可以正常工作,但如果您不在乎,那么这可能会满足您的要求。
  • 请注意,任何其他实际外部的.so 库文件驻留在您的包之外(例如/usr/lib/my_shared_lib.so),不支持将它们包含在任何类型的Python 包文件中的方法。

标签: python python-module


【解决方案1】:

我认为最简单的解决方案是将外部库添加为包数据。

setup(
    ..... 
    packages=['myLib'],
    package_data={'myLib': ['myExternalLib.so']},
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多