Lingkungan Hidup
Deskripsi
Saya membuat pembaruan env dalam proyek saya termasuk pip juga. Setelah itu saya ingin memeriksa paket yang sudah ketinggalan zaman dengan perintah:
pip list --outdated --format=columns
Setelah pengecualian itu dimunculkan.
Perilaku yang diharapkan
Saya mengharapkan daftar paket atau daftar kosong.
Bagaimana cara bereproduksi
pip list --outdated --format=columns
Keluaran
(env) project (develop) $ pip list --outdated --format=columns
ERROR: Exception:
Traceback (most recent call last):
File "/project/env/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 188, in main
status = self.run(options, args)
File "/project/env/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 156, in run
packages = self.get_outdated(packages, options)
File "/project/env/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 164, in get_outdated
dist for dist in self.iter_packages_latest_infos(packages, options)
File "/project/env/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 164, in <listcomp>
dist for dist in self.iter_packages_latest_infos(packages, options)
File "/project/env/lib/python3.6/site-packages/pip/_internal/commands/list.py", line 195, in iter_packages_latest_infos
best_candidate = evaluator.get_best_candidate(all_candidates)
File "/project/env/lib/python3.6/site-packages/pip/_internal/index.py", line 729, in get_best_candidate
best_candidate = max(candidates, key=self._sort_key)
File "/project/env/lib/python3.6/site-packages/pip/_internal/index.py", line 710, in _sort_key
has_allowed_hash = int(link.is_hash_allowed(self._hashes))
File "/project/env/lib/python3.6/site-packages/pip/_internal/models/link.py", line 213, in is_hash_allowed
return hashes.is_hash_allowed(self.hash_name, hex_digest=self.hash)
AttributeError: 'NoneType' object has no attribute 'is_hash_allowed'
@ptynecki Terima kasih telah
/ cc @cjerdonek karena dia mengerjakan bagian basis kode ini dan lebih mengenalnya daripada saya.
Masalah yang sama di Windows 10, Python 3.7.3
Masalah yang sama di Ubuntu 18.04.2 LTS, Python 3.6.8
Masalah yang sama di macOS 18.6.0 dan Python 3.7.4
Masalah yang sama di Windows 10, Python 3.7.4
Masalah yang sama di Fedora 29, Python 3.7.3.
Untuk saat ini, sebagai solusi, ...
python3 -m pip install -UI --user 'pip<19.2'
menginstal ulang pip
versi 19.1.1. Meskipun, keluaran perintah lengkapnya membuat penasaran.
$ python3 -m pip install -UI --user 'pip<19.2'
Collecting pip<19.2
Using cached https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl
Installing collected packages: pip
Successfully installed pip-19.2
Mengapa melaporkan Successfully installed pip-19.2
?
Terima kasih atas konfirmasi ini terjadi di beberapa OS!
Teman-teman, jika Anda menghadapi masalah yang sama, mohon jangan mengirim komentar tambahan. Silakan gunakan reaksi GitHub untuk memberi suara positif pada posting pertama dan berlangganan masalah.
Dengan cara itu pengelola dapat berdiskusi tentang cara menyelesaikan masalah ini dalam masalah ini - komentar tambahan "saya juga" tidak akan membantu siapa pun.
Hmm, kurasa pemeriksa tipe mengecewakan kita di sini. Anotasi jenis mengatakan hashes
harus non-None, tetapi None dalam kasus yang dilaporkan: https://github.com/pypa/pip/blob/369ec7c0a8a81a076ca5584c34c8530d7a30a220/src/pip/_internal/models/link .py # L202 -L209
Setelah melihat sekilas, saya pikir perbaikan yang baik untuk saat ini mungkin memperbarui Link.is_hash_allowed(hashes)
untuk mengembalikan False
jika hashes
adalah Tidak Ada (dan membawa anotasi agar selaras dengan memperbarui parameter menjadi Optional[Hashes]
). Itu mungkin lebih sederhana dan lebih pasti pada saat ini daripada mencoba memperbarui sesuatu di beberapa tempat yang mungkin untuk memastikan bahwa argumen hashes
selalu bukan- None
, terutama karena sepertinya kita tidak bisa bersandar pada pemeriksa tipe untuk mengonfirmasi dengan kepastian 100%.
Saya kira pemeriksa tipe mengecewakan kita di sini.
Ahhh. Ya - strict_optional adalah False untuk pip._internal.index
dan inilah tepatnya kegagalan itu.
kita tidak bisa bersandar pada pemeriksa tipe untuk mengonfirmasi dengan kepastian 100%.
Ya, kami tidak dapat sepenuhnya mengandalkannya, selama kami memiliki tanda ini untuk adopsi tambahan.
Ahhh. Ya - strict_optional adalah False untuk pip._internal.index dan inilah tepatnya kegagalan itu.
Dan meskipun models/link.py
mana fungsi didefinisikan memiliki strict_optional
diaktifkan.
Oke, saya memposting PR # 6774 untuk ini.
Masalah ini memberi tahu saya bahwa langkah yang baik setelah ini (untuk 19.3 - bukan rilis patch) adalah mengaktifkan strict_optional
untuk index.py
..
Dan meskipun model / link.py di mana fungsi didefinisikan memang memiliki strict_optional diaktifkan.
Ya - mypy melakukan pemeriksaan di situs panggilan, menggunakan aturan di situs panggilan.
Perbaikan dan PR yang Anda sarankan terlihat bagus bagi saya. Jika kami tidak melihat masalah lain muncul, saya dapat melakukan rilis perbaikan bug pada malam hari ini - ~ 3-5 jam dari sekarang.
Jika kami tidak melihat masalah lain muncul, saya dapat melakukan rilis perbaikan bug pada malam hari ini - ~ 3-5 jam dari sekarang.
Itu akan bagus. Terima kasih banyak telah melakukannya.
Halo. FWIW Saya mungkin menemukan bug di 19.2 yang tidak berhubungan dengan yang satu ini. Saya mencoba untuk mengetahuinya diam-diam dan akan membuka masalah baru setelahnya.
EDIT:
Ah, seseorang sudah membukanya https://github.com/pypa/pip/issues/6775
Perbaikannya ada di master. Saya akan merilisnya sebentar lagi - sedikit istirahat setelah hari yang melelahkan hari ini.
Rilis dengan perbaikan bug ini telah diunggah. Terima kasih semuanya (dan terutama @cjerdonek)! :)
Komentar yang paling membantu
Perbaikannya ada di master. Saya akan merilisnya sebentar lagi - sedikit istirahat setelah hari yang melelahkan hari ini.