Python 打包:Boost 库作为依赖项

Python packaging: Boost library as dependency

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

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

这个问题最好问

What is the best way to distribute a Python extension including an external library dependency.

这更好地处理二进制轮包。

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

仅包含 header 文件并不能解决需要库构建和 link 的问题。它还会引发版本不兼容的问题。

所以 setup.py 不需要任何特别的东西,它只需要知道在哪里可以找到 headers,如果图书馆包括哪些图书馆link。

文档应包括有关如何从源代码构建的说明,为此需要的不仅仅是提升(python header 文件、适当的编译器等)。

auditwheel 等工具负责将外部库依赖项捆绑到二进制轮中,因此 end-users 无需安装库即可使用您的包。

另见 manylinux for distributing binary Python extensions and this demo project