python - 使用特定的 SVN 修订版时,PIP 总是重新安装包

标签 python pip package-managers

当指定特定的 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)

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

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

关于python - 使用特定的 SVN 修订版时,PIP 总是重新安装包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7971799/

相关文章:

python - 从 Pandas 中每个组中的第一个事件开始计算第 n 天

python - 尝试在 ec2 上部署 django 时出错

python - python 中的累加器

python - 模板语法错误: Caught ImportError while rendering: No module named html5lib

python - UI 自动化 Windows 用户登录

python - 如何将从服务器下载的文件包含到 pip 安装中?

python - 如何查找特定模块的包名称?

linux - 如何在 Debian 中将 zlib 更新为自定义版本

swift - 如何在我的 Package.swift 文件中添加对 RealmSwift 的依赖?

android - 自动安装Android应用程序