Lebih
Cara cek versi python modul?
Saya baru saja menginstal python modul: membangun
dan statlib
dengan setuptools
seperti ini:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Aku ingin menjadi mampu (pemrograman) memeriksa versi mereka. Apakah ada yang setara dengan python --version
aku dapat dijalankan dari command line?
Saya python versi 2.7.3
.
582
21
Saya sarankan menggunakan pip di tempat easy_install. Dengan pip, anda bisa daftar semua paket diinstal dan versi mereka dengan
Di sistem linux, anda dapat menggunakan alat ini untuk
grep
(ataufindstr
pada Windows) untuk menemukan baris untuk paket tertentu anda're tertarik pada:Untuk setiap modul, anda dapat mencoba
__versi__
atribut, namun ada modul tanpa itu:Terakhir, sebagai perintah dalam pertanyaan anda adalah diawali dengan
sudo
, tampaknya anda're menginstal ke lingkungan python global. Sangat menyarankan untuk mengambil melihat ke python virtual manajer, misalnya virtualenvwrapperAnda dapat mencoba
Gunakan
pkg_resources
modul didistribusikan dengansetuptools
perpustakaan. Perhatikan bahwa string yang anda lulus untukget_distribution
metode harus sesuai dengan PyPI masuk.dan jika anda ingin menjalankannya dari baris perintah yang dapat anda lakukan:
Perhatikan bahwa string yang anda lulus
get_distribution
method harus sama dengan nama paket yang terdaftar di PyPI, bukan nama modul yang anda mencoba untuk mengimpor.Sayangnya ini bukanlah't selalu sama (misalnya anda melakukan
pip install memcached
, tapiimpor memcache
).Saya pikir ini bisa membantu tapi pertama-tama install
acara
paket dalam rangka untuk menjalankanpip show
kemudian menggunakan show untuk mendapatkan versi!Cara yang lebih Baik untuk melakukannya adalah:
Untuk detail Paket tertentu
pip show <package_name>
Untuk Rincian lebih lanjut:
>>> pip membantu
`pip` harus diperbarui untuk melakukan hal ini.
Pada Windows merekomendasikan perintah ini:
Di python3 dengan tanda kurung di sekitar cetak
modul.__versi__
adalah hal pertama yang harus mencoba, tapi itu doesn't selalu bekerja.Jika anda don't ingin keluar, dan anda're menggunakan pip 8 atau 9, anda masih dapat menggunakan
pip.get_installed_distributions()
untuk mendapatkan versi dari dalam Python:update: larutan di sini bekerja di pip 8 dan 9, tetapi di pip 10 fungsi telah dipindahkan dari
pip.get_installed_distributions
untukpip._internal.utils.misc.get_installed_distributions
yang secara eksplisit menunjukkan bahwa itu's tidak untuk penggunaan eksternal. It's bukan ide yang baik untuk mengandalkan itu jika anda're menggunakan pip 10+.Sebelumnya jawaban tidak memecahkan masalah saya, tapi ini kode apa:
Menggunakan
dir()
untuk mengetahui apakah modul memiliki `versi` atribut sama sekali.Anda dapat menggunakan
importlib_metadata
perpustakaan ini.Jika anda're pada python
<3.8
, pertama install dengan:pip menginstal importlib_metadata
Sejak python3.8
it's termasuk dalam standar perpustakaan.Kemudian, untuk memeriksa paket's versi (dalam contoh ini
lxml
) jalankan:``
Perlu diingat bahwa ini hanya bekerja untuk paket-paket yang diinstal dari PyPI. Juga, anda harus lulus paket nama sebagai argumen untuk
versi
metode, bukan nama modul yang paket ini menyediakan (meskipun mereka're biasanya sama).Jika metode di atas tidak bekerja, ada baiknya mencoba berikut di python:
Lihat https://stackoverflow.com/questions/31146153/get-python-tornado-version/31146188
Perhatikan,
.versi
bekerja untuk saya pada beberapa orang lain selain tornado juga.pertama tambahkan python, pip untuk variabel lingkungan anda. sehingga anda dapat mengeksekusi perintah dari command prompt. kemudian hanya memberikan python perintah. kemudian mengimpor paket
-->
impor scrapy
kemudian cetak nama versi
-->
cetak(scrapy.__versi__)
Ini pasti akan berhasil
Dengan asumsi kita menggunakan Jupyter Notebook (jika menggunakan Terminal, drop tanda seru):
Beberapa modul don't memiliki
__versi__
atribut, sehingga cara termudah adalah check di terminal:pip
daftar(lihat juga https://stackoverflow.com/a/56912280/7262247)
Saya menemukan itu cukup bisa diandalkan untuk menggunakan berbagai alat yang tersedia (termasuk salah satu yang terbaik
pkg_resources
yang disebutkan oleh Jakub Kukul' jawaban), seperti sebagian besar dari mereka tidak mencakup semua kasus. MisalnyaKarena kita membutuhkan cara yang dapat diandalkan untuk mendapatkan versi setiap paket, modul atau submodule, saya akhirnya menulis getversion. Hal ini cukup sederhana untuk menggunakan:
Lihat dokumentasi untuk rincian.
Ini bekerja di Jupyter Notebook pada Windows, terlalu! Selama Jupyter diluncurkan dari bash-compliant baris perintah seperti Git Bash (MingW64), solusi yang diberikan di banyak jawaban yang dapat digunakan dalam Jupyter Notebook pada sistem Windows dengan satu tweak kecil.
I'm menjalankan windows 10 Pro dengan Python dipasang melalui Anaconda, dan berikut kode bekerja ketika saya meluncurkan Jupyter melalui Git Bash (tetapi tidak ketika saya memulai dari Anaconda prompt).
Tweak: Menambahkan tanda seru (
!
) di depanpip
untuk membuatnya!pip
.Untuk mendapatkan daftar non-standar (pip) modul impor di modul saat ini:
Hasilnya:
Catatan:
Kode ini diletakkan bersama-sama dari solusi investasi di halaman ini, dan dari https://stackoverflow.com/questions/4858100/how-to-list-imported-modules
Cepat python program untuk membuat daftar semua packges (anda dapat menyalinnya ke requirements.txt)
Output akan terlihat seperti:
Di Python versi 3,8 ada yang baru
metadata
modul diimportlib
paket, yang bisa melakukan itu juga.Berikut adalah contoh dari dokumen:
Bangunan di Jakub Kukul's jawaban saya menemukan cara yang lebih dapat diandalkan untuk memecahkan masalah ini.
Masalah utama dari pendekatan ini adalah bahwa membutuhkan paket-paket yang akan diinstal "secara konvensional" (dan itu tidak termasuk menggunakan
pip menginstal --user
), atau dalam sistem JALAN di Python inisialisasi.Untuk mendapatkan sekitar itu anda dapat menggunakan
pkg_resources.find_distributions(path_to_search)
. Ini pada dasarnya mencari distro yang akan diimpor jikapath_to_search
dalam sistem PATH.Kita dapat iterate melalui generator ini seperti ini:
Ini akan mengembalikan sebuah kamus yang memiliki modul-modul seperti kunci dan versi mereka sebagai nilai. Pendekatan ini dapat diperluas ke lebih banyak dari nomor versi.
Terima kasih untuk Jakub Kukul untuk menunjuk ke arah yang benar