Pip忽略PyPI上存在的依赖关系链接,而从wheel安装包。

2024-05-23 17:47:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在打包我自己的Python包。我使用setuptools和wheel将其与pip捆绑在一起进行安装(在开发模式下和从testpypi存储库中)。在

安装包的每个pip命令都与--process-dependency-links一起使用。为了简化,我将放弃这个选项,这个选项在这里是隐式的。在

其中一个依赖项在PyPI中被破坏,但在开发存储库中,问题已经被修复。我知道哪个提交解决了这个问题,我知道它的SHA-1和,所以我知道下载哪个tarball。所以我在我的设置.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下载的。然后我可以分发我的包的源代码。在

^{pr2}$

然后我可以从PyPI安装它。如果我不同时设置--no-cache-dir--no-binary :all:选项(--no-cache-dir只是为了确保包不是从缓存中安装的),那么第一次安装看起来没问题。Pip下载源代码,然后制作wheel。解决依赖关系进展顺利,一切看起来都很好。Pip下载适当版本的(在我的示例中)HBMQTT包并安装它。同时,皮普制作轮子,然后将其缓存。所以第二次安装(由于明显的原因没有--no-binary选项,带有--upgrade-I选项)由于未满足要求而失败:pip找不到版本为0.9.1的HBMQTT包。PyPI中HBMQTT的最新版本是0.9.0。所以pip在尝试从wheel包安装时不处理依赖链接。在

同样的事情也发生在我尝试制作wheel(python)时设置.pybdist_wheel)并将其上载到test PyPI上。从PyPI安装失败,也无法从下载的(或由我自己制作)wheel文件安装。在

我想问题出在点或轮上。我不知道哪一个负责从车轮上安装。在

所以我的问题是我现在该怎么办?本案有哪些变通办法?我只考虑分拆HBMQTT repo并制作自己的包,直到PyPI破坏了这个包。在


Tags: pip文件no版本pypi选项模式repo