【问题标题】:pip doesn't work after upgrade升级后 pip 不起作用
【发布时间】:2015-12-08 11:49:39
【问题描述】:

今天我从pip 7.1.0升级到7.1.2,现在不行了。

$ pip search docker-compose
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 223, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/search.py", line 43, in run
    pypi_hits = self.search(query, options)
  File "/Library/Python/2.7/site-packages/pip/commands/search.py", line 60, in search
    hits = pypi.search({'name': query, 'summary': query}, 'or')
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1240, in __call__
    return self.__send(self.__name, args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1599, in __request
    verbose=self.__verbose
  File "/Library/Python/2.7/site-packages/pip/download.py", line 788, in request
    return self.parse_response(response.raw)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 1490, in parse_response
    return u.close()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/xmlrpclib.py", line 799, in close
    raise Fault(**self._stack[0])
Fault: <Fault 1: "<type 'exceptions.KeyError'>:'hits'">

所以我尝试重新安装:

sudo -H pip install --force-reinstall -U pip

重新安装运行没有错误,但是当我尝试搜索时,我得到了同样的错误。

所以,我尝试重新安装旧版本:

sudo -H pip install --force-reinstall -U pip==7.1.0

再次,重新安装成功,但重新安装后搜索仍然中断。除了错误,我确实收到了版本升级消息:

You are using pip version 7.1.0, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

禁用缓存也会出现同样的错误:

pip search docker-compose --no-cache-dir --disable-pip-version-check

问题似乎只出在搜索功能上,因为 pip 仍然可以很好地重新安装自身等。

我相信我今天只安装了另一个软件包,那就是 docker-compose。当我搜索 docker-compose 以外的包时会出现问题,如我的示例所示。

有什么想法吗?

【问题讨论】:

  • 好的,我添加了标签。
  • 2016 年 8 月,pip search docker-compose 查找包名称中包含 dockercompose 的包。 (有谁知道这是否记录在任何地方?)

标签: python pip pypi


【解决方案1】:

我无法在 Linux 上使用 pip 7.1.2 和 Python 2.7.8 或 3.5.1 重现此问题。

xmlrpclib docs 对“错误”有这样的看法:

方法调用也可能引发一个特殊的故障实例,用于发出信号 XML-RPC 服务器错误

这意味着 pip 正在报告服务器 (pypi) 端的问题。

Python Infrastructure Status site 在 2015 年 9 月 11 日和 2015 年 9 月 12 日报告了点搜索问题。

我怀疑这不是 pip 中的错误,而是 pypi.python.org 在相关日期的问题。这个问题是在 2015 年 9 月 11 日提出的。

在 2015 年 9 月 11 日,pypi bitbucket repo 上记录了一个类似的错误,强化了我的理论。

有趣的是,还有另一个类似的bug logged at pypi's github repo。在这种情况下,搜索词是一个正则表达式:

pip search "^docker-compose$"

我可以在 Linux 上的 Python 2.7.8 和 Python3.5.1、pip-7.1.2 和 pip-8.1.1 上重现此错误;但是我在 pip 文档中看不到任何内容表明 pip 搜索支持正则表达式,并且 this answer 表示不支持正则表达式,所以我认为这是一个与 OP 的问题无关的单独问题。

【讨论】:

  • pip search 使用 wiki.python.org/moin/PyPIXmlRpc search,它只匹配固定字符串。 (支持 RE 的方法,例如 '^aa.*bb' 是搜索 "aa",然后执行 RE。)
【解决方案2】:

pip 有时会在未找到匹配项(命中)时执行此操作:

$ pip search '':

Fault: &lt;Fault 1: "&lt;type 'exceptions.KeyError'&gt;:'hits'"&gt;

$ pip search 'something':

好的

也可能是服务器端错误,无法提供所需信息。因此,修复必须由 pip 开发人员或服务器开发人员完成,或两者兼而有之。

【讨论】:

    【解决方案3】:

    当我去年没有收到这个问题的答案时,我发布了an issue on GitHub,并确定我的问题是由 PyPi/pip 服务器停机引起的(我猜只是搜索部分)。

    我不能确定,但​​这个问题在去年活跃时似乎有更多的 cmets/答案。我真的以为有人在这里发布了这个答案(至少在评论或其他内容中),但现在显然不在这里。

    我认为 @tedder42 遇到的问题与我遇到的问题不同,因为 PyPi 的 there hasn't been any recent downtime。即使有人发布了他问题的真实答案,我也无法验证。所以,我认为最好的做法是无视他的赏金,如果他仍然有问题,应该变成一个新问题。

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2017-06-30
      • 2014-12-15
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 2019-03-20
      • 2017-07-06
      • 2019-01-28
      相关资源
      最近更新 更多