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。
假设有人要打包一个依赖于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。