8

当指定特定的 SVN 修订版时,PIP 总是下载并安装一个包(显着减慢同步过程)。

有没有解决的办法?一般pip会检测到包已经安装在环境中,提示使用--upgrade

我的 pip_requirements 文件有以下行:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=Django1.4A

谢谢你的帮助!

回答

  • 必须将 egg 名称指定为确切的 python 包名称。
  • 不得使用-e标志。
  • 不适用于 PIP 版本0.7,适用于1.0.2.
4

1 回答 1

3

上周末我实际上正在研究 pip,我相信我对你的 pip 问题有解释。问题只是 pip 本身的限制。由于安装过程的工作方式,该#egg=[egg-name]部分必须正确命名为 setup.py 名称 kwarg 中标识的实际项目名称(这是 PyPI 上已知的名称)。

简答

您的线路:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=Django1.4A

应该:

svn+http://code.djangoproject.com/svn/django/trunk/@16406#egg=django

长答案

根据我的理解,安装过程实际上做了以下事情(如果我错了,Ian Bicking 会让我失望 :-P)

  1. 当它得到您的要求时,它会根据 vcs+[url] 结构确定链接到它知道的 VCS。
  2. 它将代码签出到您环境中的临时目录中。
  3. 它运行 setup.py(我相信 egg_info 和 install)
  4. 已从文件系统中删除签出代码的临时目录

因此,一旦第 3 步完成并安装了您签出的源代码,Django 就会被称为 pip django(不区分大小写)。但是,如果您保持当前的需求行,pip 将搜索Django1.4A. 找不到与该名称匹配的包,它将再次检出源代码并尝试安装它。

于 2012-01-11T09:02:38.493 回答