假设某人想要打包一个依赖于C ++ boost库的Python(Cython)库。
配置setup.py
的最佳方法是什么,以便用户被正确地告知需要安装boost库(例如,在其他操作系统中的Ubuntu等apt-get install libboost-dev
)?或者将增强库包含在python包分发中是一种更好的做法吗?
答案 0 :(得分:2)
最好问这个问题
分发Python扩展的最佳方式是什么,包括 外部库依赖。
这更适用于二元轮包。
用户无需了解用于构建和安装源代码的setup.py
。用户只需下载并安装二进制轮包即可。
仅包含头文件并不能解决需要使用库构建和链接的问题。它还会打开版本不兼容的问题。
所以setup.py
不需要对此有任何特殊之处,它只需要知道在哪里找到标题,如果包含库以及要链接的库,它将成为项目中的子目录。
文档应该包含如何从源代码构建的说明,不仅需要boost(python头文件,适当的编译器等)。
像auditwheel这样的工具会将外部库依赖关系捆绑到二进制轮中,因此最终用户无需安装库即可使用您的包。
另请参阅manylinux以分发二进制Python扩展和this demo project。