Menggunakan pip, apakah mungkin untuk mengetahui versi paket mana yang saat ini diinstal?
Saya tahu pip install XYZ --upgrade
tetapi saya bertanya-tanya apakah ada yang seperti itu pip info XYZ
. Jika tidak, apa yang akan menjadi cara terbaik untuk mengetahui versi apa yang saya gunakan saat ini.
show
perintah di pip: github.com/pypa/pip/issues/33Jawaban:
Pada pip 1.3 , ada
pip show
perintah.Dalam versi yang lebih lama,
pip freeze
dangrep
harus melakukan pekerjaan dengan baik.sumber
save
nama.pip show pip
untuk mendapatkan info versi pip, daripadapip --version
seperti yang saya harapkan.pip freeze
memiliki keuntungan karena menunjukkan versi checkout VCS yang dapat diedit dengan benar, sementarapip show
tidak.Saya baru saja mengirim permintaan tarik di pip dengan perangkat tambahan Hugo Tavares berkata:
(specloud sebagai contoh)
sumber
Pip 1.3 sekarang juga memiliki perintah daftar :
sumber
pip list
generik, dan__version__
tidak. Saya juga telah melihatversion()
danget_version()
untuk yang diimpor.dan dengan --outdated sebagai argumen tambahan, Anda akan mendapatkan versi Saat ini dan Terbaru dari paket yang Anda gunakan:
Jadi menggabungkan dengan jawaban AdamKG:
Periksa juga pip-tools : https://github.com/nvie/pip-tools
sumber
Anda juga dapat menginstal
yolk
dan menjalankanyolk -l
yang juga memberikan output yang bagus. Inilah yang saya dapatkan untuk virtualenv kecil saya:sumber
Anda dapat menggunakan perintah grep untuk mengetahuinya.
Contoh:
hanya akan menampilkan versi.
sumber
Cara termudah adalah ini:
sumber
__version__
dalam kode sumbernya. Banyak paket tidak.import
dan outputpip freeze
.Ada juga alat yang disebut
pip-check
yang memberi Anda gambaran umum singkat dari semua paket yang diinstal dan status pembaruan mereka:Belum pernah menggunakannya sendiri; hanya tersandung padanya dan pertanyaan SO ini berturut-turut cepat, dan karena itu tidak disebutkan ...
sumber
Di windows, Anda dapat mengeluarkan perintah seperti:
Keluaran:
sumber
Fungsi python mengembalikan hanya versi paket dalam format yang dapat dibaca mesin:
Sebelum ke python 3.8:
Setara bash (di sini juga dipanggil dari python) akan jauh lebih kompleks (tetapi lebih kuat - lihat kehati-hatian di bawah):
Penggunaan sampel:
Perhatikan bahwa dalam kedua kasus
pkg_name
parameter harus berisi nama paket dalam format yang dikembalikan olehpip freeze
dan tidak seperti yang digunakan selamaimport
, misalnyascikit-learn
tidaksklearn
atauFlask-Caching
, tidakflask_caching
.Perhatikan bahwa sementara menjalankan
pip freeze
dalam versi bash mungkin tampak tidak efisien, hanya metode ini terbukti cukup kuat untuk mengemas kekhasan dan inkonsistensi penamaan paket (misalnya menggarisbawahi garis putus-putus, huruf kecil vs besar, dan singkatan sepertisklearn
vsscikit-learn
).Perhatian: di lingkungan yang kompleks kedua varian dapat mengembalikan nomor versi kejutan, tidak konsisten dengan apa yang sebenarnya Anda dapatkan selama
import
.Salah satu masalah seperti itu muncul ketika ada versi lain dari paket yang disembunyikan dalam subfolder pengguna
site-packages
. Sebagai ilustrasi bahaya menggunakanversion()
inilah situasi yang saya temui:Masalah lain adalah memiliki beberapa paket yang diinstal-konda di lingkungan yang sama. Jika mereka berbagi dependensi dengan paket-paket yang Anda instal dengan pip, dan versi-versi dari dependensi ini berbeda, Anda dapat menurunkan versi dependensi yang diinstal oleh pip Anda.
Sebagai ilustrasi, versi terbaru yang
numpy
tersedia di PyPI pada 04-01-2020 adalah 1.18.0, sementara pada saat yang samaconda-forge
saluran Anaconda hanya memiliki versi 1.17.3numpy
sebagai yang terbaru. Jadi ketika Anda menginstalbasemap
paket dengan conda (sebagai yang kedua), pip-instal Anda sebelumnyanumpy
akan diturunkan oleh conda ke 1.17.3, dan versi 1.18.0 tidak akan tersedia untukimport
fungsi tersebut. Dalam hal iniversion()
akan benar, danpip freeze
/conda list
salah:sumber
importlib.metadata.version('NameOfProject')
? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
?version()
masih mengembalikan yang paling awal (tertua) (2.2.3). Anda dapat mereplikasi hasil ini dengan menginstal kedua versi dengan--user
switch, tetapi menjaga secara manuallightgbm-2.2.3.dist-info
folder, agar keduanya bersama-sama, seperti yang tercantum di atas (pip biasanya akan menghapusnya - sampai tidak).pip show bekerja dengan python 3.7:
sumber
Untuk melakukan ini menggunakan kode Python:
Menggunakan
importlib.metadata.version
Python ≥3.8
Python ≤3.7
(menggunakan
importlib_metadata.version
)Menggunakan
pkg_resources.Distribution
Dikreditkan ke komentar oleh sinoroc dan mirekphd .
sumber
Untuk Windows Anda bisa
buka cmd dan ketik python, tekan enter.
ketik impor dan tekan enter.
ketik ._version__ dan tekan enter.
Seperti yang dapat Anda lihat di screen shot di sini saya menggunakan metode ini untuk memeriksa versi modul serial.
sumber
Dalam pertanyaan, tidak disebutkan pengguna OS mana yang menggunakan (Windows / Linux / Mac)
Karena ada beberapa jawaban yang akan bekerja dengan sempurna di Mac dan Linux.
Perintah di bawah ini dapat digunakan jika pengguna mencoba menemukan versi paket python di windows.
Di PowerShell gunakan perintah di bawah ini:
pip list | findstr <PackageName>
Contoh:-
pip list | findstr requests
Keluaran:
requests 2.18.4
sumber