【发布时间】: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.py 和requirements.txt 文件中):
foo>=0.0.1,==0.*
我们还有其他几个包,这种要求格式适用于所有包,但不是这个。我得到的错误是:
找不到满足要求的版本
foo==0.*,>=0.0.1(来自bar==1.6.12)(来自版本:0.0.1.linux-x86_64、0.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