繁体   English   中英

pip 意外地没有安装带有分支/提交固定的最新版本的 git 包

[英]pip unexpectedly not installing latest version of git package with branch/commit pinning

我有一个包含以下行的 requirements.txt 文件(除其他外):

git+https://github.com/lead-ratings/sexmachine.git@master#egg=SexMachine

当我做

pip install -r requirements.txt

我懂了

Requirement already satisfied (use --upgrade to upgrade): SexMachine from git+https://github.com/lead-ratings/sexmachine.git@master#egg=SexMachine in /home/myuser/virtual_env/lib/python2.7/site-packages (from -r requirements.txt (line 38))

并且包没有更新到主版本。 实际上,它保留了我之前在requirements.txt列出的 PyPI 的一些旧版本。

如果我在固定中指定提交或使用--no-cache-dir标志,它也不起作用。 我正在使用 pip 6.1.1。

如果我使用--upgrade标志,那么它就可以工作。 但是,钉住的重点是什么? 如果真的不是,为什么它会说“要求已经满足”?

Pip 仅根据版本号(在 setup.py 中)决定是否满足要求。 在您的情况下,您之前安装的 pypi 版本与 sexmachine 的 master 分支具有相同的版本号,因此 pip 什么也没做。

似乎处理这个的方法是始终传递-U / --upgrade标志:

pip install -r requirements.txt -U

维护者的位置在#2835 中给出:

pip 这里的行为是正确的,我们不确定来自包内部的项目/文件的版本号。 如果他们想支持可独立识别的任意标签,他们应该让 setup.py 以此为基础进行自我调整。

在我的情况下,甚至-U--upgrade都不起作用。 Pip 还需要 setup.py 中的版本不同才能安装新版本。 通过更新 setup.py 中的包版本,它起作用了。

当我创建一个 conda 环境时,我遇到了类似的问题,在 GitHub 上的一个包的pip安装被固定到一个特定的提交。 然后我想用pip将它固定到另一个提交来更新这个包。 -U标志没有帮助。 但是,-- --force-reinstall标签做到了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM