Python打包:将库作为依赖项

时间:2017-10-19 06:58:22

标签: python boost cython pypi python-packaging

假设某人想要打包一个依赖于C ++ boost库的Python(Cython)库。

配置setup.py的最佳方法是什么,以便用户被正确地告知需要安装boost库(例如,在其他操作系统中的Ubuntu等apt-get install libboost-dev)?或者将增强库包含在python包分发中是一种更好的做法吗?

1 个答案:

答案 0 :(得分:2)

最好问这个问题

  

分发Python扩展的最佳方式是什么,包括   外部库依赖。

这更适用于二元轮包。

用户无需了解用于构建和安装源代码的setup.py。用户只需下载并安装二进制轮包即可。

仅包含头文件并不能解决需要使用库构建和链接的问题。它还会打开版本不兼容的问题。

所以setup.py不需要对此有任何特殊之处,它只需要知道在哪里找到标题,如果包含库以及要链接的库,它将成为项目中的子目录。

文档应该包含如何从源代码构建的说明,不仅需要boost(python头文件,适当的编译器等)。

auditwheel这样的工具会将外部库依赖关系捆绑到二进制轮中,因此最终用户无需安装库即可使用您的包。

另请参阅manylinux以分发二进制Python扩展和this demo project