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

时间:2015-05-07 14:56:57

标签: python git pip

我有一个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标志,那么它可以工作。但那么钉扎的意义何在?为什么说'#34;要求已经满足"如果真的不是吗?

2 个答案:

答案 0 :(得分:4)

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

似乎处理此问题的方法是始终传递-U / --upgrade标记:

pip install -r requirements.txt -U

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

  

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

答案 1 :(得分:0)

就我而言,即使 -U--upgrade 也不起作用。 Pip 还需要 setup.py 中的版本不同才能安装新版本。通过更新 setup.py 中的包版本,它起作用了。