[英]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.