PIP hg+ 和 git+ 总是下载包而不是检测满足的依赖

1 投票
1 回答
862 浏览
提问于 2025-04-17 10:02

我在这里的另一个问题刚刚得到了回答,关于为什么使用 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模块。

如果没有指定蛋标识符,会发生以下情况:

  1. Pip会在已安装的模块中查找 git+git://github.com/yuchant/django-jinja2.git
  2. Pip找不到它,所以会尝试重新安装

如果你使用了蛋标识符,就不会出现这个问题。

撰写回答