pip升级后无法使用

14

今天我将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之外的软件包时出现了问题,就像我的例子一样。

有任何想法吗?


好的,我已经添加了标签。 - Travis
在2016年8月,pip search docker-compose会在包名称中查找带有dockercompose的软件包。(不知道这是否有任何记录?) - denis
3个回答

14

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

xmlrpclib文档中对“faults”的解释如下:

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

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

Python基础设施状态网站报告了2015-09-11和2015-09-12 pip搜索存在问题。

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

pypi bitbucket repo上也记录了类似的错误,这加强了我的理论。

有趣的是,在pypi的Github存储库上还有另一个类似的错误日志。在这种情况下,搜索术语是正则表达式: pip search "^docker-compose$" 我可以在Linux上的Python 2.7.8和Python3.5.1、pip-7.1.2和pip-8.1.1上重现此错误;但是,我在pip文档中找不到任何支持pip搜索正则表达式的内容,并且这个答案指出正则表达式不受支持,因此我认为这是一个与OP问题无关的单独问题。

1
pip search 使用 https://wiki.python.org/moin/PyPIXmlRpc 中的 search,仅匹配固定字符串。(支持正则表达式例如 '^aa.*bb' 的方法是先搜索 "aa",然后再进行正则表达式匹配。) - denis

1

pip有时会出现找不到匹配项的情况:

$ pip search '':

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

$ pip search 'something':

OK

这也可能是服务器端的错误,导致没有提供所需信息。因此,修复工作需要由pip开发人员或服务器开发人员或两者共同完成。


0

去年我没有收到这个问题的答案,所以我在 GitHub 上发布了一个问题,后来发现我的问题是由于 PyPi/pip 服务器宕机(只是搜索部分)导致的。

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

我认为 @tedder42 遇到的问题与我不同,因为PyPi 最近没有出现任何停机时间。即使有人回答了他的问题,我也无法验证。因此,我认为最好的做法是忽略他的悬赏,如果他仍然遇到问题,应该将其转化为一个新问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接