我正在打包我自己的Python包。我使用setuptools和轮子捆绑它,使用pip进行安装(无论是在开发模式下还是在测试PyPI存储库中)。
在这里,用于安装软件包的每个pip命令都与--process-dependency-links一起使用。为了简化,我将简化这个选项,并且这个选项在这里是隐含的。
其中一个依赖项在PyPI中被破坏了,但在开发存储库中,问题已经修复。我知道哪个提交解决了这个问题,我知道它的SHA-1和,所以我知道下载哪个tarball。所以我在我的setup.py文件中这样做了:
...
install_requires=[
    'hbmqtt>0.9.0'
],
dependency_links=[
    'https://github.com/beerfactory/hbmqtt/archive/f4330985115e3ffb3ccbb102230dfd15bb822a72.zip#egg=hbmqtt-0.9.1'
],
...当我在开发模式下安装软件包时(通过setuptools和pip),软件包是从git repo下载的。然后我可以发布我的包的源代码。
python setup.py sdist
twine upload -s --sign-with gpg2 -r testpypi dist/<pkg-name>-<version>.tar.gz然后我可以从PyPI安装它。如果我没有同时设置--no-cache-dir和--no-binary :all:选项(只需要--no-cache-dir以确保包不是从缓存中安装的),那么第一次安装看起来没问题。Pip下载源代码,然后制作轮子。解析依赖关系进行得很好,一切看起来都很正常。Pip下载适当版本的HBMQTT包(在我的示例中)并安装它。同时,pip生成轮子,然后将其缓存。因此,第二次安装(由于明显的原因没有--no-binary选项,并使用--upgrade和-I选项)由于未满足要求而失败: pip找不到版本为0.9.1的HBMQTT包。PyPI中的HBMQTT的最新版本是0.9.0。因此,pip在尝试从轮子包中安装时不会处理依赖项链接。
当我尝试制作轮子(python setup.py bdist_wheel)并将其上传到测试PyPI时,也会发生同样的事情。从PyPI安装失败,也无法从下载的(或由我制作的)控制盘文件安装。
我想故障出在管道或车轮上。我不知道哪个负责从轮子上安装。
所以我的问题是我现在应该做什么?对于这种情况,有哪些解决方法?我只考虑派生HBMQTT repo并制作自己的包,直到PyPI破解了包。
发布于 2017-11-03 16:32:53
你试过--process-dependency-link标志了吗?
https://github.com/pypa/pip/issues/4295
编辑:对不起,我知道你已经试过了。对我来说,这解决了问题,但这对你并不是很有用。
https://stackoverflow.com/questions/45438271
复制相似问题