<p>pip 10: «pip list» предупреждает: «Ошибка десериализации записи кэша, запись игнорируется»</p>

Созданный на 16 апр. 2018  ·  27Комментарии  ·  Источник: pypa/pip

Здравствуйте,
pip v.10 неоднократно предупреждает "Ошибка десериализации записи кэша, запись игнорируется":

$ uname
Darwin
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.4
BuildVersion:   17E199
$ brew info python<strong i="7">@2</strong>
python<strong i="8">@2</strong>: stable 2.7.14 (bottled), devel 2.7.15rc1, HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python@2/2.7.14_3 (4,603 files, 81.8MB) *
  Poured from bottle on 2018-03-10 at 22:25:36
 :
 :
$ brew info python3
python: stable 3.6.5 (bottled), devel 3.7.0b3, HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,768 files, 100.2MB) *
  Poured from bottle on 2018-03-30 at 20:43:21
 :
 :
$ pip2 -V
pip 10.0.0 from /usr/local/lib/python2.7/site-packages/pip (python 2.7)
$ pip3 -V
pip 10.0.0 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)
$ pip2 list --outdated
Package  Version Latest      Type 
-------- ------- ----------- -----
protobuf 3.5.1   3.5.2.post1 wheel
$ pip3 list --outdated
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Cache entry deserialization failed, entry ignored
Package  Version Latest      Type 
-------- ------- ----------- -----
protobuf 3.5.1   3.5.2.post1 wheel
$ 
cache vendored dependency auto-locked bug

Самый полезный комментарий

Похоже, вы испортили свой кеш pip. Он хранится в ~/.cache/pip .

Если вы удалите этот каталог, эта проблема должна быть исправлена.

Все 27 Комментарий

Я также заметил ту же проблему для 64-битных версий Windows 7 и 10 Professional. Я вижу проблему только для Python 3.5, а не для Python 2.7 или Python 3.6 (у меня все 3 версии установлены отдельно). Добавление --format legacy или --no-cache-dir устраняет проблему.

Обновление временного исправления pip3 с использованием.

curl https://bootstrap.pypa.io/get-pip.py | python3

Вместо pip install -U pip

Для pip2 pip2 install --upgrade pip

Похоже, вы испортили свой кеш pip. Он хранится в ~/.cache/pip .

Если вы удалите этот каталог, эта проблема должна быть исправлена.

Спасибо. Это явление воспроизводится. Я подтвердил, что pip3 list --no-cache-dir --outdated работает без предупреждений.

Я подозреваю, что проблема в том, что записи кэша, созданные в Python 2, не могут быть десериализованы в Python 3. Если я использую параметр --cache-dir для принудительного использования разных кешей для Python 2 и Python 3, проблема исчезнет.

Сообщение об ошибке генерируется из C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ controller.py, строка 139. Ближайшая причина - сбой Serializer.loads () в C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ serialize.py строка 75.

Спасибо. Ваш анализ звучит разумно.

@pradyunsg : проблема не

AFAIU, использование --no-cache-dir на Python 3 - это только временный обходной путь для этого (т. Е. Это ошибка).

Можем ли мы сделать так, чтобы каталог общего кеша для Python 2 и 3 снова работал (или есть причина, по которой одна и та же версия pip >= 10 должна использовать другой формат кеша для PY2 сравнению с PY3 )?

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

Тот факт, что это тоже есть на stderr, очень раздражает.

Удаление каталога в .cache и создание 2 новых pip2 и pip3 в этом каталоге временно решило проблему для меня на одном из моих компьютеров Mac, но не на другом. Переустановка pip3 через curl не помогла. Фактически, проблема возникает непоследовательно и в основном, но не исключительно, с pip3, а не pip2.

Вероятно, это связано с ошибкой в ​​конвейере кеширования - есть небольшая история с msgpack, некорректно обрабатывающим байты.

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

Кто-нибудь планирует что-то сделать с этой недавно появившейся ошибкой? pip следует обновить как можно скорее, чтобы избежать конфликтов несовместимых кешей.

Упомянутые здесь обходные пути действительно применимы не во всех случаях и могут вызвать больше проблем, чем сортировка. Добавление части управления версиями в именование записей кэша решит эту проблему раз и навсегда, даже если формат кеша снова изменится.

Потенциально каждый разработчик пакетов python столкнется с этой проблемой, если будет использовать tox для тестирования с несколькими версиями python. Пожалуйста, не просите их изолировать кеши для каждой цели tox, это лишает смысла наличие кеша.

У меня тоже такая проблема.

У меня такая же проблема

что просходит?? слишком много ошибок и проблем с 9.0.1

@HakShak Использование stderr - это хорошо. Спецификация POSIX требует, чтобы все сообщения журнала отправлялись на stderr, а не на stdout, включая ошибки, предупреждения, информацию и отладку. На стандартный ввод должен поступать только обычный вывод программы. Для большинства инструментов это обычно означает: вывод, анализируемый компьютером. Например, в диспетчере пакетов stdout должен содержать только установленные / удаленные / обновленные пакеты, без шаблона, который должен перейти на stderr. Я помню, как за эти годы исправил несколько несовместимых инструментов. Выходной поток здесь не является проблемой.

С другой стороны, я только что заметил, что эта ошибка была добавлена ​​к этапу 18.0, не знаю, как это исправить, поскольку текущая версия - 10.0. Это похоже на очень долгое время в будущем, или, может быть, я не знаю о плане повышения версии pip до уровня текущего года?

Это похоже на очень долгое время в будущем, или, может быть, я не знаю о плане повышения версии pip до уровня текущего года?

Мы перешли на CalVer (# 5324), 18.0 будет следующим выпуском pip, вероятно, в следующем месяце.

Я обнаружил, что на Python 2 pip может использовать кеш, заполненный запуском Python 3, но не наоборот.

Ответ, кэшированный на Py2, приводит к тому, что кеш сохраняет заголовок, который загружается на Py3 как bytes вместо str . Это приводит к сбою десериализации. Работаем над PR, чтобы исправить это вверх по течению.

PR в апстриме: ionrock / cachecontrol # 190

PR https://github.com/ionrock/cachecontrol/pull/190 объединен и выпущен в CacheControl 0.12.5.

pip примет это изменение, когда мы обновим наши поставленные зависимости при подготовке к следующему выпуску. :)

У меня та же проблема.

Это ошибка, которую я получаю

Ошибка десериализации записи кэша, запись игнорируется
Повторная попытка (Retry (total = 4, connect = None, read = None, redirect = None, status = None)) после того, как соединение прервано из-за 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Существующее соединение было принудительно закрыто удаленный хост ', None, 10054, None))': / simple / pip /
Повторная попытка (Retry (total = 3, connect = None, read = None, redirect = None, status = None)) после того, как соединение прервано 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Существующее подключение было принудительно закрыто удаленный хост ', None, 10054, None))': / simple / pip /
Повторная попытка (Retry (total = 2, connect = None, read = None, redirect = None, status = None)) после того, как соединение прервано из-за 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Существующее соединение было принудительно закрыто удаленный хост ', None, 10054, None))': / simple / pip /
Повторная попытка (Retry (total = 1, connect = None, read = None, redirect = None, status = None)) после того, как соединение прервано 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Существующее соединение было принудительно закрыто удаленный хост ', None, 10054, None))': / simple / pip /
Повторная попытка (Retry (total = 0, connect = None, read = None, redirect = None, status = None)) после того, как соединение прервано 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Существующее соединение было принудительно закрыто удаленный хост ', None, 10054, None))': / simple / pip /
Требование уже обновлено: pip в c: \ programdata \ anaconda3 \ lib \ site-packages
Вы используете pip версии 9.0.3, однако доступна версия 18.0.
Вам следует рассмотреть возможность обновления с помощью команды python -m pip install --upgrade pip.

Как мне этого избежать. Из-за этого я не могу установить какие-либо другие пакеты, так как он просит меня обновить pip.

Похоже, вы испортили свой кеш pip. Он хранится в ~/.cache/pip .

Если вы удалите этот каталог, эта проблема должна быть исправлена.

Меня больше интересует, что такое десериализация записи кеша?

https://github.com/pypa/pip/issues/5250#issuecomment -394706450 объясняет, почему это не удалось.

По сути, ошибка возникает из-за несовпадения при преобразовании http-запроса в строку (сериализация). Эта ошибка / предупреждение появляется при повторной попытке преобразовать эту строку в HTTP-запрос (десериализация).

Похоже, вы испортили свой кеш pip. Он хранится в ~/.cache/pip .

Если вы удалите этот каталог, эта проблема должна быть исправлена.

Огромное спасибо.

Легко решить эту проблему, запустите приложение или терминал от имени администратора

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги