首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果PyPI上存在依赖关系,则Pip在从轮子安装软件包时会忽略dependency_links。

如果PyPI上存在依赖关系,则Pip在从轮子安装软件包时会忽略dependency_links。
EN

Stack Overflow用户
提问于 2017-08-01 20:47:36
回答 1查看 929关注 0票数 9

我正在打包我自己的Python包。我使用setuptools和轮子捆绑它,使用pip进行安装(无论是在开发模式下还是在测试PyPI存储库中)。

在这里,用于安装软件包的每个pip命令都与--process-dependency-links一起使用。为了简化,我将简化这个选项,并且这个选项在这里是隐含的。

其中一个依赖项在PyPI中被破坏了,但在开发存储库中,问题已经修复。我知道哪个提交解决了这个问题,我知道它的SHA-1和,所以我知道下载哪个tarball。所以我在我的setup.py文件中这样做了:

代码语言:javascript
运行
复制
...
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下载的。然后我可以发布我的包的源代码。

代码语言:javascript
运行
复制
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破解了包。

EN

回答 1

Stack Overflow用户

发布于 2017-11-03 16:32:53

你试过--process-dependency-link标志了吗?

https://github.com/pypa/pip/issues/4295

编辑:对不起,我知道你已经试过了。对我来说,这解决了问题,但这对你并不是很有用。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45438271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档