<p>pip 10: "pip list" warnt "Deserialisierung des Cache-Eintrags fehlgeschlagen, Eintrag ignoriert"</p>

Erstellt am 16. Apr. 2018  ·  27Kommentare  ·  Quelle: pypa/pip

Hallo,
pip v.10 warnt wiederholt "Deserialisierung des Cache-Eintrags fehlgeschlagen, Eintrag ignoriert":

$ 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

Hilfreichster Kommentar

Es scheint, als hätten Sie Ihren Pip-Cache durcheinander gebracht. Es ist in ~/.cache/pip gespeichert.

Wenn Sie dieses Verzeichnis löschen, sollte dieses Problem behoben sein.

Alle 27 Kommentare

Ich habe das gleiche Problem auch für die 64-Bit-Versionen von Windows 7 und 10 Professional festgestellt. Ich sehe das Problem nur für Python 3.5 und nicht für Python 2.7 oder Python 3.6 (ich habe separate Installationen aller 3 Versionen). Durch Hinzufügen von --format Legacy oder --no-cache-dir wird das Problem behoben.

Temporäres Fix Upgrade pip3 mit.

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

Anstelle von pip install -U pip

Für pip2 pip2 install --upgrade pip

Es scheint, als hätten Sie Ihren Pip-Cache durcheinander gebracht. Es ist in ~/.cache/pip gespeichert.

Wenn Sie dieses Verzeichnis löschen, sollte dieses Problem behoben sein.

Vielen Dank. Dieses Phänomen reproduziert sich. Ich habe bestätigt, dass pip3 list --no-cache-dir --outdated ohne Warnungen funktioniert.

Ich vermute, dass das Problem darin besteht, dass in Python 2 erstellte Cache-Einträge in Python 3 nicht deserialisiert werden können. Wenn ich die Option --cache-dir verwende, um verschiedene Caches für Python 2 und Python 3 zu erzwingen, verschwindet das Problem.

Die Fehlermeldung wird in Zeile 139 von C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ controller.py generiert. Die Hauptursache ist ein Fehler von Serializer.loads () in C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ serialize.py Zeile 75.

Vielen Dank. Ihre Analyse klingt vernünftig.

@pradyunsg : Das Problem wird nicht durch Löschen des Cache-

AFAIU, die Verwendung von --no-cache-dir in Python 3 ist nur eine vorübergehende Problemumgehung (dh es handelt sich um einen Fehler).

Können wir dafür sorgen, dass das gemeinsam genutzte Cache-Verzeichnis für Python 2 und 3 wieder funktioniert (oder gibt es einen Grund, warum dieselbe Version von pip >= 10 ein anderes Cache-Format für PY2 Vergleich zu PY3 )?

Dies scheint ein schwerwiegender Fehler zu sein, und eine schnelle Problemumgehung sollte darin bestehen, sicherzustellen, dass zwischengespeicherte Dateinamen einen Teil der Serialisierungsversion enthalten.

Die Tatsache, dass dies auch auf stderr ist, ist ziemlich ärgerlich.

Das Löschen des Verzeichnisses in .cache und das Erstellen von zwei neuen pip2 und pip3 in diesem Verzeichnis löste das Problem für mich vorübergehend auf einem meiner Macs, aber nicht auf einem anderen. Die Neuinstallation von pip3 über curl hat nicht geholfen. Tatsächlich tritt das Problem inkonsistent und meistens, aber nicht ausschließlich, bei pip3 und nicht bei pip2 auf.

Dies ist wahrscheinlich auf einen Fehler in der Caching-Pipeline zurückzuführen - es gibt ein bisschen Geschichte, in der msgpack Dinge falsch um Bytes herum macht.

Wenn jemand einen Blick darauf werfen kann, bevor einer der Betreuer die Zeit dafür findet, wäre das cool. :) :)

Plant jemand, etwas gegen diesen neu eingeführten Fehler zu unternehmen? pip sollte so schnell wie möglich aktualisiert werden, um Konflikte mit inkompatiblen Caches zu vermeiden.

Die hier genannten Problemumgehungen sind nicht in allen Fällen wirklich anwendbar und verursachen wahrscheinlich mehr Probleme als das Sortieren. Das Hinzufügen eines Versionierungsteils zur Benennung des Cache-Eintrags würde dieses Problem ein für alle Mal beheben, selbst wenn sich das Cache-Format erneut ändern würde.

Möglicherweise würde jeder Python-Paketentwickler auf dieses Problem stoßen, wenn er tox zum Testen mit mehreren Python-Versionen verwendet. Bitten Sie sie nicht, die Caches für jedes Tox-Ziel zu isolieren. Dies macht den Zweck eines Caches zunichte.

Ich habe auch dieses Problem.

Ich habe auch das gleiche Problem

was geschieht?? zu viele Fehler und Probleme seit 9.0.1

@HakShak Die Tatsache, dass stderr verwendet wird, ist eine gute Sache. Die POSIX-Spezifikation dokumentiert und erfordert, dass alle Protokollierungsnachrichten an stderr und nicht an stdout gesendet werden, einschließlich Fehler, Warnungen, Informationen und Debugging. Es sollte nur die normale Programm Ausgabe auf stdin gehen. Dies bedeutet normalerweise für die meisten Tools: Computer-Parsable-Ausgabe. Zum Beispiel sollte stdout auf einem Paketmanager nur installierte / entfernte / aktualisierte Pakete enthalten, ohne die Boilerplate, die an stderr gehen sollte. Ich erinnere mich, dass ich im Laufe der Jahre nur wenige nicht konforme Tools repariert habe. Der Ausgabestream ist hier nicht das Problem.

Auf der anderen Seite habe ich gerade beobachtet, dass dieser Fehler zum 18.0-Meilenstein hinzugefügt wurde, nicht sicher, wie ich das angehen soll, da die aktuelle Version 10.0 ist. Ist wie eine sehr lange Zeit in der Zukunft, oder weiß ich vielleicht nichts über einen Plan, die Pip-Version auf das aktuelle Jahr abzustimmen?

Ist wie eine sehr lange Zeit in der Zukunft, oder weiß ich vielleicht nichts über einen Plan, die Pip-Version auf das aktuelle Jahr abzustimmen?

Wir sind zu CalVer (# 5324) gewechselt, 18.0 wird die nächste Veröffentlichung von pip sein, wahrscheinlich nächsten Monat.

Ich habe festgestellt, dass pip unter Python 2 einen Cache verwenden kann, der von einem Python 3-Lauf gefüllt wird, aber nicht umgekehrt.

Eine auf Py2 zwischengespeicherte Antwort führt dazu, dass im Cache ein Header gespeichert wird, der auf Py3 als bytes anstelle von str geladen wird. Dies führt dazu, dass die Deserialisierung fehlschlägt. Arbeiten an einem PR, um es vorgelagert zu reparieren.

Upstream PR: Ionrock / Cachecontrol # 190

Upstream PR https://github.com/ionrock/cachecontrol/pull/190 wird zusammengeführt und in CacheControl 0.12.5 veröffentlicht.

pip wird diese Änderung übernehmen, wenn wir unsere verkauften Abhängigkeiten aktualisieren, um die nächste Version vorzubereiten. :) :)

Ich habe das gleiche Problem.

Dies ist der Fehler, den ich bekomme

Deserialisierung des Cache-Eintrags fehlgeschlagen, Eintrag ignoriert
Wiederholen (Wiederholen (gesamt = 4, Verbinden = Keine, Lesen = Keine, Umleiten = Keine, Status = Keine)) nach Verbindungsunterbrechung durch 'ProtocolError (' Verbindung abgebrochen. ', ConnectionResetError (10054,' Eine vorhandene Verbindung wurde von zwangsweise geschlossen) der Remote-Host ', None, 10054, None))': / simple / pip /
Wiederholen (Wiederholen (gesamt = 3, Verbinden = Keine, Lesen = Keine, Umleiten = Keine, Status = Keine)) nach Verbindungsunterbrechung durch 'ProtocolError (' Verbindung abgebrochen. ', ConnectionResetError (10054,' Eine vorhandene Verbindung wurde zwangsweise geschlossen von) der Remote-Host ', None, 10054, None))': / simple / pip /
Wiederholen (Wiederholen (gesamt = 2, Verbinden = Keine, Lesen = Keine, Umleiten = Keine, Status = Keine)) nach Verbindungsunterbrechung durch 'ProtocolError (' Verbindung abgebrochen. ', ConnectionResetError (10054,' Eine vorhandene Verbindung wurde zwangsweise geschlossen von) der Remote-Host ', None, 10054, None))': / simple / pip /
Wiederholen (Wiederholen (Gesamt = 1, Verbinden = Keine, Lesen = Keine, Umleiten = Keine, Status = Keine)) nach Verbindungsunterbrechung durch 'ProtocolError (' Verbindung abgebrochen. ', ConnectionResetError (10054,' Eine vorhandene Verbindung wurde zwangsweise geschlossen von) der Remote-Host ', None, 10054, None))': / simple / pip /
Wiederholen (Wiederholen (Gesamt = 0, Verbinden = Keine, Lesen = Keine, Umleiten = Keine, Status = Keine)) nach Verbindungsunterbrechung durch 'ProtocolError (' Verbindung abgebrochen. ', ConnectionResetError (10054,' Eine vorhandene Verbindung wurde zwangsweise geschlossen von) der Remote-Host ', None, 10054, None))': / simple / pip /
Anforderung bereits aktuell: pip in c: \ programdata \ anaconda3 \ lib \ site-packages
Sie verwenden pip Version 9.0.3, jedoch ist Version 18.0 verfügbar.
Sie sollten ein Upgrade über den Befehl 'python -m pip install --upgrade pip' in Betracht ziehen.

Wie vermeide ich das? Aus diesem Grund kann ich keine anderen Pakete installieren, da ich aufgefordert werde, pip zu aktualisieren.

Es scheint, als hätten Sie Ihren Pip-Cache durcheinander gebracht. Es ist in ~/.cache/pip gespeichert.

Wenn Sie dieses Verzeichnis löschen, sollte dieses Problem behoben sein.

Ich interessiere mich mehr für die Deserialisierung von Cache-Einträgen.

https://github.com/pypa/pip/issues/5250#issuecomment -394706450 erläutert, warum dies fehlgeschlagen ist.

Im Wesentlichen tritt der Fehler aufgrund einer Nichtübereinstimmung beim Konvertieren einer http-Anforderung in eine Zeichenfolge auf (Serialisierung). Dieser Fehler / diese Warnung wird angezeigt, wenn versucht wird, diese Zeichenfolge erneut in eine http-Anforderung zu konvertieren (Deserialisierung).

Es scheint, als hätten Sie Ihren Pip-Cache durcheinander gebracht. Es ist in ~/.cache/pip gespeichert.

Wenn Sie dieses Verzeichnis löschen, sollte dieses Problem behoben sein.

Ich danke dir sehr.

Führen Sie die App oder das Terminal einfach als Administrator aus, um dieses Problem zu beheben

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen keine Aktivität mehr stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen