PIP hg+ 和 git+ 总是下载包而不是检测满足的依赖
我在这里的另一个问题刚刚得到了回答,关于为什么使用 pip svn+
时总是会重新下载整个包。
现在我在我的 pip_requirements
文件中还有一些包,总是被重新下载,而不是检测到这些包的需求已经满足。
这些包的类型如下:
git+git://github.com/yuchant/django-jinja2.git
hg+https://bitbucket.org/yuchant/django-storages
使用 svn+
时,无论我指定的是主干还是特定版本,我的包都能被检测为满足需求。那对于 git 和 mercurial 来说,情况是不是不同呢?
1 个回答
3
简短回答
在使用任何版本控制系统(VCS)和pip需求文件时,你应该总是加上 #egg=[蛋名]
。
所以你的需求文件应该包含:
git+git://github.com/yuchant/django-jinja2.git#egg=django-jinja2
hg+https://bitbucket.org/yuchant/django-storages#egg=django-storages
详细回答
如果你像在问题中那样指定pip需求,但没有加上 #egg=[蛋名]
,我把这个字符串称为“蛋标识符”。这样会出现一个和你上一个问题类似的问题。Pip会用蛋标识符去查找当前安装的Python模块。
如果没有指定蛋标识符,会发生以下情况:
- Pip会在已安装的模块中查找
git+git://github.com/yuchant/django-jinja2.git
- Pip找不到它,所以会尝试重新安装
如果你使用了蛋标识符,就不会出现这个问题。