【问题标题】:PIP always reinstalls package when using specific SVN revision当使用特定的 SVN 版本时,PIP 总是重新安装包
【发布时间】:2011-12-19 18:49:43
【问题描述】:

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

【问题讨论】:

    标签: python pip package-managers


    【解决方案1】:

    上周末我实际上正在研究 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 就会被称为django(不区分大小写)。但是,如果您保持当前的需求行,pip 将搜索Django1.4A。找不到与该名称匹配的包,它将再次检出源代码并尝试安装它。

    【讨论】:

    • 非常感谢您的回答!就像您说的那样-我更改了鸡蛋名称,并且 pip 正确检测到了最新的软件包。你是怎么找到这个问题的? :) 这是我第一次回答一个老问题。再次感谢!
    • 我一直在寻找未回答的问题,因为我一直想回答关于 SO 的问题,但我太懒了,所以我想我会开始(有点像新年的决议)。所以,我随机发现了你的问题,并且对这个主题有所了解。很高兴我能帮上忙 :-) 顺便说一句,不是跟踪狂,但看到你来自波特兰!那是我的家乡! (好吧,就是这样:-D)
    • 哦,-e 标志总是更新 repo。这只是做它应该做的功能。你使用 virtualenv 来管理你的项目吗?
    • 我的 pip_requirements 中剩下的要修复的是 git+hg+ 所以如果你有更多的见解,我将它作为一个新问题发布在这里:) stackoverflow.com/questions/8825297/… 一个波特兰同胞?多么小的世界——我明天要和一个在 github 上认识的人见面!如果你来城里,请告诉我:) 再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2021-09-16
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2017-06-05
    • 2019-01-22
    相关资源
    最近更新 更多