После обновления не работает

Сегодня я обновился от пункта 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, как в моих примерах.

Любые идеи?

Ответ 1

Я не смог воспроизвести это с помощью протокола 7.1.2 и Python 2.7.8 или 3.5.1 в Linux.

xmlrpclib docs говорят об ошибках:

Вызов метода также может вызвать специальный экземпляр Fault, используемый для сигнализации Ошибки сервера XML-RPC

Это означает, что pip сообщает о проблеме на стороне сервера (pypi).

Сайт состояния инфраструктуры Python сообщает о проблемах с поиском пипов в 2015-09-11 и 2015-09-12.

Я подозреваю, что это не ошибка в пипе, а проблема с pypi.python.org о датах, о которых идет речь. Этот вопрос был задан в 2015-09-11 годах.

Аналогичная ошибка была зарегистрирована на pypi bitbucket repo в 2015-09-11 годах, усиливая мою теорию.

Интересно, что существует еще одна подобная ошибка зарегистрированная в pypi github repo. В этом случае термин поиска является регулярным выражением:

pip search "^docker-compose$"

Я могу воспроизвести эту ошибку на Python 2.7.8 и Python3.5.1, pip-7.1.2 и pip-8.1.1 на Linux; однако я не вижу ничего в документации на pip, чтобы предположить, что поиск в пике поддерживает regex, а этот ответ утверждает, что regex не поддерживается, поэтому я думаю, что это отдельный вопрос, не связанный к вопросу ОП.

Ответ 2

pip делает это иногда, если совпадений (хитов) не найдено:

$ pip search '':

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

$ pip search 'something':

OK

Также может быть ошибка на стороне сервера, которая не может предоставить необходимую информацию. Таким образом, исправление должно быть выполнено pip devs, или разработчиками сервера, или и тем и другим.

Ответ 3

Когда я не получил ответа на этот вопрос в прошлом году, я опубликовал вопрос о GitHub, и было определено, что моя проблема была вызванный тем, что сервер PyPi/pip не работает (только часть поиска, я думаю).

Я не могу быть уверен, но, похоже, было больше комментариев/ответов на этот вопрос, когда он был активным в прошлом году. Я действительно думал, что кто-то написал этот ответ здесь (по крайней мере, в комментарии или что-то еще), но он явно не здесь сейчас.

Я думаю, что у tedder42 есть другая проблема, чем у меня, потому что в PyPi не было недавнего простоя. Даже если кто-то отправил реальный ответ на его вопрос, я бы не смог проверить это. Поэтому я считаю, что лучший способ действий - проигнорировать его щедрость, и если у него все еще есть проблема, это должно быть обращено в новый вопрос.