【发布时间】:2018-04-27 15:23:38
【问题描述】:
我有一个基于 Cython 的包,它依赖于其他 C++ SO 库。这些库在 Ubuntu (dev) 和 RedHat (prod) 之间是二进制不同的。所以 Cython 生成的 SO 文件也必须不同。如果我使用 Wheel 打包它,两个环境的文件名相同:
包版本-cp27-cp27mu-linux_x86_64.whl
因此,如果我将其上传到 pypi,它将与基于 RedHat 的同一包的分发冲突。我必须将它上传到 pypi,因为该项目是 PEX-ed(通过 Pants),并且 PEX 尝试从 pypi 下载,如果找不到它,则会失败,并出现以下异常。
捕获的异常:'pex.resolver.Unsatisfiable'
任何想法如何解决它? 谢谢。
【问题讨论】:
-
我认为处理这个问题的唯一方法是将 C++ 库静态包含到轮子中。难道不能在 manylinux docker 镜像上构建你的轮子吗?应该有工具可以自动执行静态包括不属于基础 manylinux 安装的库的工作。
-
在 PyPi 上只允许使用多平台二进制轮子,这意味着构建
manylinux1及以上轮子。有关详细信息,请参阅上面的链接。
标签: python ubuntu cython redhat