当指定特定的 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
。
最佳答案
上周末我实际上是在围绕 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)
- 当它收到您的要求时,它会根据 vcs+[url] 结构确定链接指向它知道的 VCS。
- 它将代码 check out 到您环境中的一个临时目录中。
- 它运行 setup.py(我相信 egg_info 和 install)
- checkout 代码的临时目录已从文件系统中删除
因此,一旦第 3 步完成并且您 checkout 的源代码已安装,Django 就可以 pip 为 django
(不区分大小写)。但是,如果您保留当前的需求行,pip 将搜索 Django1.4A
。找不到与该名称匹配的包,它将再次检查源代码并尝试安装它。
关于python - 使用特定的 SVN 修订版时,PIP 总是重新安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971799/