我有一个依赖于可执行文件的Python包。由于可执行文件需要相当长的时间来构建,我想使用bdist
通过我公司的内部PyPI索引来分发它。我需要在macOS和Linux上使用它。
我的setup.py
在两个操作系统上均可正常运行。运行python setup.py bdist upload -r private-pypi
后,索引具有以下两个包:
但是,我遇到了在其他项目中将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 install
来自那里,但我怀疑我会得到同样的错误。
AFAIK,这是我们唯一一个以bdist
而不是sdist
分发的软件包。源代码分发版没有附加到其版本号的平台(它是-0.0.1.tar.gz
而不是-0.0.1.linux-x86_64.tar.gz
),所以问题几乎肯定存在。
这仍然让我对解决方案感到茫然。我很困惑bdist
制作了pip
似乎无法解析的包版本。
我的目标是在包含可执行文件的PyPI上获取此包,然后能够在仍然限制版本的同时与客户端一起下载它。我该怎么做呢?
答案 0 :(得分:0)
使用bdist_wheel
似乎解决了这个问题。