【问题标题】:How do I `install_requires` a bdist package uploaded to PyPI?如何`install_requires` 一个上传到 PyPI 的 bdist 包?
【发布时间】:2018-03-03 00:57:57
【问题描述】:

我有一个依赖于可执行文件的 Python 包。由于构建可执行文件需要相当长的时间,我想使用bdist 通过我公司的内部 PyPI 索引分发它。我在 macOS 和 Linux 上都需要它。

我的setup.py 在两种操作系统上都能正常工作。运行python setup.py bdist upload -r private-pypi后,索引有以下两个包:

  • foo-0.0.1.linux-x86_64.tar.gz
  • foo-0.0.1.macosx-10.12-intel.tar.gz

但是,我在将 foo 包指定为其他项目中的 install_requires 要求时遇到了问题。我有另一个需要它的bar 包。我对它有以下要求(在setup.pyrequirements.txt 文件中):

foo>=0.0.1,==0.*

我们还有其他几个包,这种要求格式适用于所有包,但不是这个。我得到的错误是:

找不到满足要求的版本foo==0.*,>=0.0.1(来自bar==1.6.12)(来自版本:0.0.1.linux-x86_640.0.1.macosx-10.12-intel
找不到与foo==0.*,>=0.0.1 匹配的分布(来自bar==1.6.12

即使在构建已上传到 PyPI 的包的同一台机器上,我也会收到此错误。

在这种情况下,bar 包与pip install --upgrade /path/to/bar 一起安装(并且.pypirc 被配置为查看我们的内部 PyPI 索引),但它也可以在同一个私有 PyPI 索引上使用。虽然我还没有尝试从那里 pip installing 它,但我怀疑我会得到同样的错误。

AFAIK,这是我们唯一以bdist 而不是sdist 分发的软件包。源代码发行版的版本号没有附加平台(应该是 -0.0.1.tar.gz 而不是 -0.0.1.linux-x86_64.tar.gz),所以问题几乎肯定存在。

这仍然让我不知所措。我很困惑 bdist 制作了一个 pip 似乎无法解析的软件包版本。

我的目标是在 PyPI 上获取包含可执行文件的这个包,然后能够在仍然限制版本的同时通过客户端下载它。我应该怎么做呢?

【问题讨论】:

  • 我建议 bdist_wheel 而不是 bdist,afaik 不会从 bdist tar 安装现代工具

标签: python python-2.7 pip setuptools


【解决方案1】:

使用bdist_wheel 似乎已经解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 2017-11-14
    • 2020-05-03
    • 2013-04-09
    • 2021-09-05
    • 2010-10-21
    • 2018-07-26
    • 1970-01-01
    相关资源
    最近更新 更多