【问题标题】:How to create different Python Wheel distributions for Ubuntu and RedHat如何为 Ubuntu 和 RedHat 创建不同的 Python Wheel 发行版
【发布时间】: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


【解决方案1】:

我通过使用不同的 PyPi 实例找到了解决方案。所以我们的 DEV Ubuntu 环境和 PROD RedHat 只使用了两个不同的 PyPi 源。

为此,我必须进行两个配置 ~/.pypic 和 ~/.pip/pip.conf 才能上传。

【讨论】:

    猜你喜欢
    • 2021-10-09
    • 2012-08-03
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    相关资源
    最近更新 更多