<p>pip 10: "pip list" memperingatkan "Deserialisasi entri cache gagal, entri diabaikan"</p>

Dibuat pada 16 Apr 2018  ·  27Komentar  ·  Sumber: pypa/pip

Halo,
pip v.10 berulang kali memperingatkan "Deserialisasi entri cache gagal, entri diabaikan":

$ 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

Komentar yang paling membantu

Sepertinya Anda telah mengacaukan cache pip Anda. Ini disimpan dalam ~/.cache/pip .

Jika Anda menghapus direktori itu, masalah ini harus diperbaiki.

Semua 27 komentar

Saya juga mencatat masalah yang sama untuk versi 64-bit Windows 7 dan 10 Professional. Saya melihat masalahnya hanya untuk Python 3.5 dan bukan Python 2.7 atau Python 3.6 (Saya memiliki instalasi terpisah dari semua 3 versi). Menambahkan --format legacy atau --no-cache-dir akan menghilangkan masalah.

Perbaiki sementara peningkatan pip3 menggunakan.

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

Alih-alih pip install -U pip

Untuk pip2 pip2 install --upgrade pip

Sepertinya Anda telah mengacaukan cache pip Anda. Ini disimpan dalam ~/.cache/pip .

Jika Anda menghapus direktori itu, masalah ini harus diperbaiki.

Terima kasih. Fenomena ini berkembang biak. Saya telah mengkonfirmasi bahwa pip3 list --no-cache-dir --outdated bekerja tanpa peringatan.

Saya menduga bahwa masalahnya adalah entri cache yang dibuat dengan Python 2 tidak dapat dideserialisasi dalam Python 3. Jika saya menggunakan opsi --cache-dir untuk memaksa cache yang berbeda untuk Python 2 dan Python 3, masalahnya akan hilang.

Pesan kesalahan dihasilkan dari C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ controller.py baris 139. Penyebab terdekat adalah kegagalan Serializer.loads () di C: \ Python36 \ Lib \ site-packages \ pip_vendor \ cachecontrol \ serialize.py baris 75.

Terima kasih. Analisis Anda terdengar masuk akal.

@pradyunsg : Masalahnya tidak diperbaiki dengan menghapus dir cache (lihat komentar @japagetw).

AFAIU, menggunakan --no-cache-dir pada Python 3 hanyalah solusi sementara untuk ini (yaitu, ini adalah bug).

Bisakah kita membuat dir cache bersama untuk Python 2 dan 3 berfungsi lagi (atau apakah ada alasan mengapa versi yang sama dari pip >= 10 perlu menggunakan format cache yang berbeda pada PY2 vs. PY3 )?

Ini sepertinya bug serius dan satu solusi cepat harus memastikan bahwa nama file entri yang di-cache berisi bagian versi serialisasi di dalamnya.

Fakta bahwa ini juga di stderr cukup mengganggu.

Menghapus direktori di .cache dan membuat 2 yang baru pip2 dan pip3 di direktori itu, memecahkan masalah untuk saya di salah satu Mac saya untuk sementara, tetapi tidak di yang lain. Menginstal ulang pip3 melalui curl tidak membantu. Faktanya, masalah muncul secara tidak konsisten dan sebagian besar, tetapi tidak secara eksklusif, dengan pip3 bukan pip2.

Hal ini mungkin disebabkan oleh bug di pipeline caching - ada sedikit histori dengan msgpack melakukan kesalahan di sekitar byte.

Jika seseorang dapat melihat ini, sebelum salah satu pengelola menemukan waktu untuk itu, itu bagus. :)

Adakah yang berencana untuk melakukan sesuatu tentang bug yang baru diperkenalkan ini? pip harus diperbarui secepatnya untuk menghindari bentrok cache yang tidak kompatibel.

Solusi yang disebutkan di sini tidak benar-benar dapat diterapkan di semua kasus dan cenderung menyebabkan lebih banyak masalah daripada penyortiran. Menambahkan bagian pembuatan versi dalam penamaan entri cache akan mengatasi masalah ini sekali untuk semua, bahkan jika format cache akan berubah lagi.

Kemungkinan setiap pengembang paket python akan menghadapi masalah ini jika mereka menggunakan tox untuk menguji dengan beberapa versi python. Harap jangan meminta mereka untuk mengisolasi cache untuk setiap target racun, ini akan mengalahkan tujuan memiliki cache.

Saya mengalami masalah ini juga.

Saya mengalami masalah yang sama juga

apa yang terjadi?? terlalu banyak bug dan masalah sejak 9.0.1

@HakShak Fakta bahwa stderr digunakan adalah hal yang baik. Dokumen spesifikasi POSIX dan mensyaratkan bahwa semua pesan logging akan pergi ke stderr dan bukan stdout, termasuk kesalahan, peringatan, info, debug. Hanya keluaran program normal yang harus pergi ke stdin. Ini biasanya berarti, untuk kebanyakan alat: keluaran yang dapat diurai oleh komputer. Misalnya pada manajer paket, stdout harus berisi hanya paket yang diinstal / dihapus / ditingkatkan, tanpa boilerplate yang harus menuju ke stderr. Saya ingat memperbaiki beberapa alat yang tidak sesuai selama bertahun-tahun. Aliran keluaran bukan masalah di sini.

Di sisi lain, saya baru saja mengamati bahwa bug ini telah ditambahkan ke tonggak 18.0, tidak yakin bagaimana mengambil ini, karena versi saat ini adalah 10.0. Apakah seperti waktu yang sangat lama di masa depan, atau mungkin saya tidak tahu tentang rencana untuk meningkatkan versi pip agar sesuai dengan tahun ini?

Apakah seperti waktu yang sangat lama di masa depan, atau mungkin saya tidak tahu tentang rencana untuk meningkatkan versi pip agar sesuai dengan tahun ini?

Kami beralih ke CalVer (# 5324), 18.0 akan menjadi rilis pip berikutnya, kemungkinan bulan depan.

Saya menemukan bahwa di Python 2, pip dapat menggunakan cache yang diisi oleh operasi Python 3 tetapi tidak sebaliknya.

Tanggapan yang di-cache di Py2 menghasilkan cache yang menyimpan tajuk yang dimuat di Py3 sebagai bytes alih-alih str . Ini menyebabkan deserialization gagal. Mengerjakan PR untuk memperbaikinya di bagian hulu.

Hulu PR: ionrock / cachecontrol # 190

Hulu PR https://github.com/ionrock/cachecontrol/pull/190 digabungkan dan dirilis di CacheControl 0.12.5.

pip akan menyerap perubahan itu ketika kita mengupdate dependensi yang berjualan untuk persiapan rilis berikutnya. :)

Saya mengalami masalah yang sama.

Ini adalah kesalahan yang saya dapatkan

Deserialisasi entri cache gagal, entri diabaikan
Mencoba lagi (Retry (total = 4, connect = None, read = None, redirect = None, status = None)) setelah koneksi diputus oleh 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Sambungan yang ada ditutup secara paksa oleh host jarak jauh ', Tidak Ada, 10054, Tidak Ada))': / simple / pip /
Mencoba lagi (Retry (total = 3, connect = None, read = None, redirect = None, status = None)) setelah koneksi diputus oleh 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Sambungan yang ada ditutup secara paksa oleh host jarak jauh ', Tidak Ada, 10054, Tidak Ada))': / simple / pip /
Mencoba lagi (Retry (total = 2, connect = None, read = None, redirect = None, status = None)) setelah koneksi diputus oleh 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Sambungan yang ada ditutup secara paksa oleh host jarak jauh ', Tidak Ada, 10054, Tidak Ada))': / simple / pip /
Mencoba lagi (Retry (total = 1, connect = None, read = None, redirect = None, status = None)) setelah koneksi diputus oleh 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Sambungan yang ada ditutup secara paksa oleh host jarak jauh ', Tidak Ada, 10054, Tidak Ada))': / simple / pip /
Mencoba lagi (Retry (total = 0, connect = None, read = None, redirect = None, status = None)) setelah koneksi diputus oleh 'ProtocolError (' Connection aborted. ', ConnectionResetError (10054,' Sambungan yang ada ditutup secara paksa oleh host jarak jauh ', Tidak Ada, 10054, Tidak Ada))': / simple / pip /
Persyaratan sudah terbaru: pip di c: \ programdata \ anaconda3 \ lib \ site-packages
Anda menggunakan pip versi 9.0.3, namun versi 18.0 tersedia.
Anda harus mempertimbangkan untuk memutakhirkan melalui perintah 'python -m pip install --upgrade pip'.

Bagaimana saya menghindari ini. Karena ini saya tidak dapat menginstal paket lain karena meminta saya untuk mengupgrade pip.

Sepertinya Anda telah mengacaukan cache pip Anda. Ini disimpan dalam ~/.cache/pip .

Jika Anda menghapus direktori itu, masalah ini harus diperbaiki.

Saya lebih tertarik, apa itu deserialisasi entri cache?

https://github.com/pypa/pip/issues/5250#issuecomment -394706450 menjelaskan mengapa gagal.

Intinya, kesalahan terjadi karena ketidakcocokan saat mengubah permintaan http menjadi string (serialisasi). Kesalahan / peringatan ini muncul saat mencoba mengubah string itu menjadi permintaan http lagi (deserialisasi).

Sepertinya Anda telah mengacaukan cache pip Anda. Ini disimpan dalam ~/.cache/pip .

Jika Anda menghapus direktori itu, masalah ini harus diperbaiki.

Terima kasih banyak.

Mudah untuk mengatasi masalah ini, jalankan aplikasi atau terminal sebagai administrator

Utas ini telah dikunci secara otomatis karena tidak ada aktivitas baru-baru ini setelah ditutup. Silakan buka masalah baru untuk bug terkait.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat