我有一个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;要求已经满足"如果真的不是吗?
答案 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 中的包版本,它起作用了。