<p>pip 10: "pip list" avisa "Falha na desserialização da entrada do cache, entrada ignorada"</p>

Criado em 16 abr. 2018  ·  27Comentários  ·  Fonte: pypa/pip

Olá,
pip v.10 avisa repetidamente "Falha na desserialização da entrada do cache, entrada ignorada":

$ 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

Comentários muito úteis

Parece que você bagunçou o cache do pip. Ele está armazenado em ~/.cache/pip .

Se você excluir esse diretório, esse problema deve ser corrigido.

Todos 27 comentários

Também observei o mesmo problema para as versões de 64 bits do Windows 7 e 10 Professional. Vejo o problema apenas para Python 3.5 e não Python 2.7 ou Python 3.6 (tenho instalações separadas de todas as 3 versões). Adicionar --format legacy ou --no-cache-dir faz com que o problema desapareça.

Correção temporária pip3 de atualização usando.

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

Em vez de pip install -U pip

Para pip2 pip2 install --upgrade pip

Parece que você bagunçou o cache do pip. Ele está armazenado em ~/.cache/pip .

Se você excluir esse diretório, esse problema deve ser corrigido.

Obrigado. Este fenômeno se reproduz. Confirmei que pip3 list --no-cache-dir --outdated funciona sem avisos.

Suspeito que o problema é que as entradas de cache criadas no Python 2 não podem ser desserializadas no Python 3. Se eu usar a opção --cache-dir para forçar caches diferentes para Python 2 e Python 3, o problema desaparece.

A mensagem de erro é gerada a partir da linha 139 de C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ controller.py. A causa próxima é uma falha de Serializer.loads () em C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ serialize.py linha 75.

Obrigado. Sua análise parece razoável.

@pradyunsg : O problema não é corrigido excluindo o diretório do cache (veja o comentário de @japagetw).

AFAIU, usando --no-cache-dir no Python 3 é apenas uma solução temporária para isso (ou seja, é um bug).

Podemos fazer o diretório de cache compartilhado para Python 2 e 3 funcionar novamente (ou há uma razão pela qual a mesma versão de pip >= 10 precisa usar um formato de cache diferente em PY2 vs. PY3 )?

Este parece ser um bug sério e uma solução rápida deve ser garantir que os nomes dos arquivos de entradas em cache contenham uma parte da versão de serialização dentro deles.

O fato de que também está no stderr é bastante irritante.

Excluir o diretório em .cache e criar 2 novos pip2 e pip3 naquele diretório, resolveu o problema temporariamente para mim em um de meus Macs, mas não em outro. Reinstalar pip3 via curl não ajudou. Na verdade, o problema parece inconsistente e principalmente, mas não exclusivamente, com pip3 e não pip2.

Isso é provavelmente devido a um bug no pipeline de cache - há um pouco de história com msgpack fazendo coisas incorretas em torno de bytes.

Se alguém puder dar uma olhada nisso, antes que um dos mantenedores encontre tempo para isso, seria legal. :)

Alguém está planejando fazer algo sobre esse bug recém-introduzido? pip deve ser atualizado o mais rápido possível para evitar conflitos de caches incompatíveis.

As soluções alternativas mencionadas aqui não são realmente aplicáveis ​​em todos os casos e provavelmente causarão mais problemas do que a classificação. Adicionar uma parte de controle de versão na nomenclatura da entrada do cache resolveria esse problema de uma vez por todas, mesmo se o formato do cache mudasse novamente.

Potencialmente, todo desenvolvedor de pacote python encontraria esse problema se usasse tox para testar várias versões de python. Por favor, não peça a eles para isolar os caches para cada alvo de tox, isso anula o propósito de ter um cache.

Eu também estou tendo esse problema.

Estou tendo o mesmo problema também

o que acontece?? muitos bugs e problemas desde 9.0.1

@HakShak O fato de stderr ser usado é uma coisa boa. A especificação POSIX documenta e requer que todas as mensagens de registro sejam enviadas para stderr e não para stdout, incluindo erros, avisos, informações, depuração. Apenas a saída normal do programa deve ir para stdin. Isso geralmente significa, para a maioria das ferramentas: saída analisável por computador. Por exemplo, em um gerenciador de pacotes, stdout deve conter apenas pacotes instalados / removidos / atualizados, sem o clichê que deve ir para stderr. Lembro-me de corrigir algumas ferramentas incompatíveis ao longo dos anos. O fluxo de saída não é o problema aqui.

Por outro lado, acabei de observar que esse bug foi adicionado ao marco 18.0, não tenho certeza de como fazer isso, já que a versão atual é 10.0. É como se fosse muito tempo no futuro, ou talvez eu não saiba sobre um plano para aumentar a versão do pip para coincidir com o ano atual?

É como se fosse muito tempo no futuro, ou talvez eu não saiba sobre um plano para aumentar a versão do pip para coincidir com o ano atual?

Mudamos para CalVer (# 5324), 18.0 será o próximo lançamento do pip, provavelmente no próximo mês.

Descobri que no Python 2, o pip é capaz de usar um cache preenchido por um Python 3 executado, mas não vice-versa.

Uma resposta em cache no Py2 resulta no armazenamento do cache de um cabeçalho que carrega no Py3 como bytes vez de str . Isso faz com que a desserialização falhe. Trabalhando em um PR para consertá-lo.

Upstream PR: ionrock/cachecontrol#190

Upstream PR https://github.com/ionrock/cachecontrol/pull/190 foi mesclado e lançado no CacheControl 0.12.5.

pip absorverá essa mudança quando atualizarmos nossas dependências de fornecedores em preparação para o próximo lançamento. :)

Eu estou tendo o mesmo problema.

Este é o erro que recebo

A desserialização da entrada do cache falhou, entrada ignorada
Tentando novamente (Tentar novamente (total = 4, conectar = Nenhum, ler = Nenhum, redirecionar = Nenhum, status = Nenhum)) após a conexão interrompida por 'ProtocolError (' Conexão abortada. ', ConnectionResetError (10054,' Uma conexão existente foi fechada à força por o host remoto ', Nenhum, 10054, Nenhum))': / simple / pip /
Tentando novamente (Tentar novamente (total = 3, conectar = Nenhum, ler = Nenhum, redirecionar = Nenhum, status = Nenhum)) após a conexão interrompida por 'ProtocolError (' Conexão abortada. ', ConnectionResetError (10054,' Uma conexão existente foi fechada à força por o host remoto ', Nenhum, 10054, Nenhum))': / simple / pip /
Tentando novamente (Tentar novamente (total = 2, conectar = Nenhum, ler = Nenhum, redirecionar = Nenhum, status = Nenhum)) após a conexão interrompida por 'ProtocolError (' Conexão abortada. ', ConnectionResetError (10054,' Uma conexão existente foi fechada à força por o host remoto ', Nenhum, 10054, Nenhum))': / simple / pip /
Tentando novamente (Tentar novamente (total = 1, conectar = Nenhum, ler = Nenhum, redirecionar = Nenhum, status = Nenhum)) após a conexão interrompida por 'ProtocolError (' Conexão abortada. ', ConnectionResetError (10054,' Uma conexão existente foi fechada à força por o host remoto ', Nenhum, 10054, Nenhum))': / simple / pip /
Tentando novamente (Tentar novamente (total = 0, conectar = Nenhum, ler = Nenhum, redirecionar = Nenhum, status = Nenhum)) após a conexão interrompida por 'ProtocolError (' Conexão abortada. ', ConnectionResetError (10054,' Uma conexão existente foi fechada à força por o host remoto ', Nenhum, 10054, Nenhum))': / simple / pip /
Requisito já atualizado: pip em c: \ programdata \ anaconda3 \ lib \ site-packages
Você está usando o pip versão 9.0.3, mas a versão 18.0 está disponível.
Você deve considerar a atualização por meio do comando 'python -m pip install --upgrade pip'.

Como faço para evitar isso. Devido a isso, não consigo instalar nenhum outro pacote, pois ele está me pedindo para atualizar o pip.

Parece que você bagunçou o cache do pip. Ele está armazenado em ~/.cache/pip .

Se você excluir esse diretório, esse problema deve ser corrigido.

Estou mais interessado em, o que é desserialização de entrada de cache?

https://github.com/pypa/pip/issues/5250#issuecomment -394706450 explica por que falhou.

Em essência, o erro ocorre devido a uma incompatibilidade ao converter uma solicitação http em uma string (serialização). Este erro / aviso aparece ao tentar converter aquela string em uma solicitação http novamente (desserialização).

Parece que você bagunçou o cache do pip. Ele está armazenado em ~/.cache/pip .

Se você excluir esse diretório, esse problema deve ser corrigido.

Muito obrigado.

Fácil de resolver este problema, execute o aplicativo ou terminal como administrador

Este tópico foi bloqueado automaticamente, pois não houve nenhuma atividade recente depois que ele foi fechado. Abra um novo problema para bugs relacionados.

Esta página foi útil?
0 / 5 - 0 avaliações