如何“install_requires”上传到PyPI的bdist包?

时间:2017-09-21 15:32:13

标签: python python-2.7 pip setuptools

我有一个依赖于可执行文件的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 install来自那里,但我怀疑我会得到同样的错误。

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

这仍然让我对解决方案感到茫然。我很困惑bdist制作了pip似乎无法解析的包版本。

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

1 个答案:

答案 0 :(得分:0)

使用bdist_wheel似乎解决了这个问题。