升级后 pip 不起作用

pip doesn't work after upgrade

今天从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 以外的包时会出现问题,如我的示例所示。

有什么想法吗?

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

xmlrpclib docs 在 'faults' 上有话要说:

Method calls may also raise a special Fault instance, used to signal XML-RPC server errors

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

Python Infrastructure Status site 报告了 2015-09-11 和 2015-09-12 的 pip 搜索问题。

我怀疑这不是 pip 中的错误,而是 pypi.python.org 在 question.This 问题的日期问题是在 2015-09-11 提出的。

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

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

pip search "^docker-compose$"

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

pip 如果未找到匹配项(命中),有时会这样做:

$ pip search '':

Fault: <Fault 1: "<type 'exceptions.KeyError'>:'hits'">

$ pip search 'something':

好的

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

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

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

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