Saya baru saja menginstal modul python: construct
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
Saya ingin dapat (secara terprogram) memeriksa versinya. Apakah ada yang setara dengan python --version
saya dapat dijalankan dari baris perintah?
Versi python saya adalah 2.7.3
.
pip list
Jawaban:
Saya sarankan menggunakan pip di tempat easy_install . Dengan pip, Anda dapat mendaftar semua paket yang diinstal beserta versinya
Di sebagian besar sistem linux, Anda dapat menyalurkan ini ke
grep
(ataufindstr
di Windows) untuk menemukan baris untuk paket tertentu yang Anda minati:Untuk modul individual, Anda dapat mencoba
__version__
atributnya , namun ada modul tanpa itu:Terakhir, ketika perintah dalam pertanyaan Anda diawali
sudo
, tampaknya Anda menginstal ke lingkungan python global. Sangat menyarankan untuk memperhatikan manajer lingkungan virtual python , misalnya virtualenvwrappersumber
pip show lxml | grep Version
; ini akan berjalan lebih cepat, karena hanya memeriksa satu paket.pip list | grep lxml
grep
di windows? Sejak pip beku | grep lxml tidak berfungsi di windwos.pip list | findstr lxml
Anda dapat mencoba
sumber
inspect
) tidak memiliki__version__
atribut.serial.VERSION
. Mungkin ada beberapa modul lain yang umum digunakan juga, yang tidak mengikuti PEP 0396: python.org/dev/peps/pep-0396print(contruct.__version__)
jika menggunakan Python 3. *Gunakan
pkg_resources
modul yang didistribusikan dengansetuptools
perpustakaan. Perhatikan bahwa string yang Anda lewati keget_distribution
metode harus sesuai dengan entri PyPI.dan jika Anda ingin menjalankannya dari baris perintah yang dapat Anda lakukan:
Perhatikan bahwa string yang Anda berikan ke
get_distribution
metode harus nama paket yang terdaftar di PyPI, bukan nama modul yang Anda coba impor.Sayangnya ini tidak selalu sama (mis. Anda lakukan
pip install memcached
, tetapiimport memcache
).sumber
__version__
.construct.version.full_version
pkg_resources.get_distrinbution
tidak selalu berhasil juga. Ini mengeluarkan beberapaDistributionNotFound
pengecualian dengan pesan kesalahan seperti: "Distribusi 'the_package_name' tidak ditemukan dan diperlukan oleh aplikasi"get_distribution
metodeSaya pikir ini bisa membantu tetapi instal dulu
show
paket untuk menjalankanpip show
kemudian gunakan show untuk menemukan versi!sumber
pip: error: No command by the name pip show (maybe you meant "pip install show")
pip show PACKAGE | awk '/^Version: / {sub("^Version: ", ""); print}'
. Anda mungkin bisa lolos dengan skrip AWK yang lebih sederhana, tetapi yang disebutkan di atas akan lebih aman untuk setiap kasus tepi.pip show
diimplementasikan pada pip 1.2.1.post1 . Anda menggunakan versi pip yang sangat tanggal sehingga tidak heran Anda mengalami masalah! Saya sedang menjalankan pip 7.1.2 . Jika ada sesuatu yang mencegah Anda memperbarui, Anda selalu dapat menginstalnya secara lokal atau dalam virtualenv.Cara yang lebih baik untuk melakukannya adalah:
Untuk rincian Paket spesifik
pip show <package_name>
Untuk lebih jelasnya:
>>> pip help
pip
harus diperbarui untuk melakukan ini.Pada Windows merekomendasikan perintah adalah:
sumber
pip show scikit-learn
bukanpip show sklearn
. sklearn adalah bentuk pendek yang digunakan selama impor, tidak mengenali secara langsungpip
karenascikit-learn
paket lengkapnya tidak belajarsklearn
Di python3 dengan tanda kurung di sekitar cetak
sumber
__version__
atribut.print
, seperti halnya(2)+(3)
evaluasi terhadap5
. Ketika Anda memiliki koma di dalam tanda kurung, hal-hal yang mungkin menjadi sedikit lebih menarik, meskipun untukprint
, masih berfungsi, semacam.module.__version__
adalah hal pertama yang baik untuk dicoba, tetapi itu tidak selalu berhasil.Jika Anda tidak ingin keluar, dan Anda menggunakan pip 8 atau 9, Anda masih bisa menggunakan
pip.get_installed_distributions()
untuk mendapatkan versi dari dalam Python:memperbarui: solusi di sini bekerja di pip 8 dan 9, tetapi dalam pip 10 fungsi telah dipindahkan dari
pip.get_installed_distributions
kepip._internal.utils.misc.get_installed_distributions
untuk secara eksplisit menunjukkan bahwa itu tidak untuk penggunaan eksternal. Ini bukan ide yang baik untuk mengandalkan itu jika Anda menggunakan pip 10+.sumber
pip
, ini harus selalu berfungsi.Jawaban sebelumnya tidak menyelesaikan masalah saya, tetapi kode ini berhasil:
sumber
__version__
jika tidak ditentukan. Jika tidak ada__version__
, Anda tidak menerima hasil untuk paket yang Anda inginkan.__version__
atribut, yang merupakan standar ( python.org/dev/peps/pep-0396/#specification ), tidak mungkin untuk mengetahui di mana dan bagaimana versi dimasukkan tanpa penyelidikan manual.Anda dapat menggunakan
importlib_metadata
perpustakaan untuk ini.Jika Anda menggunakan python
<3.8
, instal dulu dengan:Karena python
3.8
termasuk dalam pustaka standar.Kemudian, untuk memeriksa versi paket (dalam contoh ini
lxml
) jalankan:Perlu diingat bahwa ini hanya berfungsi untuk paket yang diinstal dari PyPI. Selain itu, Anda harus memberikan nama paket sebagai argumen ke
version
metode, bukan nama modul yang disediakan paket ini (meskipun biasanya sama).sumber
Gunakan
dir()
untuk mencari tahu apakah modul memiliki__version__
atribut sama sekali.sumber
Jika metode di atas tidak berhasil, ada baiknya mencoba yang berikut ini dengan python:
Lihat Dapatkan Versi Python Tornado?
Catatan, itu
.version
bekerja untuk saya pada beberapa orang lain selain tornado juga.sumber
pertama tambahkan python, pip ke variabel lingkungan Anda. sehingga Anda dapat menjalankan perintah dari command prompt. maka cukup beri perintah python . lalu impor paket
->
import scrapy
lalu cetak nama versi
->
print(scrapy.__version__)
Ini pasti akan berhasil
sumber
__version__
atribut.pip freeze
<package> .__ version_ berfungsi. Terima kasih sudah memposting.Dengan asumsi kita menggunakan Jupyter Notebook (jika menggunakan Terminal, lepaskan tanda seru):
1) jika paket (misalnya xgboost) diinstal dengan pip :
2) jika paket (mis. Caffe) diinstal dengan conda :
sumber
Beberapa modul tidak memiliki
__version__
atribut, jadi cara termudah adalah memeriksa di terminal:pip list
sumber
Dalam versi Python 3.8 ada
metadata
modul baru dalamimportlib
paket, yang bisa melakukan itu juga.Berikut ini adalah contoh dari dokumen:
sumber
Saya sarankan membuka
python
shell di terminal (dalam versi python Anda tertarik), mengimpor perpustakaan, dan mendapatkan__version__
atributnya.Catatan 1: Kita harus menganggap versi python . Jika kita telah menginstal versi python yang berbeda, kita harus membuka terminal dalam versi python yang kita minati. Misalnya, membuka terminal dengan
python3.8
dapat (pasti akan) memberikan versi perpustakaan yang berbeda dari membuka denganpython3.5
ataupython2.7
.Catatan 2: Kami menghindari penggunaan
print
fungsi , karena perilakunya tergantung pada python2 atau python3. Kami tidak membutuhkannya, terminal akan menunjukkan nilai ekspresi.sumber
Ini juga berfungsi di Jupyter Notebook di Windows! Selama Jupyter diluncurkan dari baris perintah bash-compliant seperti Git Bash (MingW64), solusi yang diberikan dalam banyak jawaban dapat digunakan dalam Jupyter Notebook pada sistem Windows dengan satu tweak kecil.
Saya menjalankan windows 10 Pro dengan Python diinstal melalui Anaconda, dan kode berikut berfungsi ketika saya meluncurkan Jupyter via Git Bash (tetapi tidak ketika saya memulai dari prompt Anaconda).
Tweak: Tambahkan tanda seru (
!
) di depanpip
untuk membuatnya!pip
.sumber
Program python cepat untuk mendaftar semua paket (Anda dapat menyalinnya ke requirement.txt )
Outputnya akan terlihat seperti:
sumber
(lihat juga https://stackoverflow.com/a/56912280/7262247 )
Saya merasa sangat tidak dapat diandalkan untuk menggunakan berbagai alat yang tersedia (termasuk yang terbaik yang
pkg_resources
disebutkan oleh jawaban Jakub Kukul ), karena kebanyakan dari mereka tidak mencakup semua kasus . Sebagai contohKarena kita membutuhkan cara yang dapat diandalkan untuk mendapatkan versi setiap paket, modul atau submodule, saya akhirnya menulis getversion . Sangat mudah digunakan:
Lihat dokumentasi untuk detailnya.
sumber
Untuk mendapatkan daftar modul non-standar (pip) yang diimpor dalam modul saat ini:
Hasil:
catatan:
Kode ini disatukan dari solusi baik di halaman ini dan dari Cara daftar modul yang diimpor?
sumber
Singkatnya:
(Ini akan memberikan semua perpustakaan bersama dengan detail versi).
Dan:
(Ini memberikan detail perpustakaan lengkap).
sumber
Anda dapat mencoba ini:
Ini akan menampilkan semua paket dengan versinya. Keluaran
sumber
Membangun jawaban Jakub Kukul saya menemukan cara yang lebih dapat diandalkan untuk menyelesaikan masalah ini.
Masalah utama dari pendekatan itu adalah yang mengharuskan paket untuk diinstal "secara konvensional" (dan itu tidak termasuk menggunakan
pip install --user
), atau berada di sistem PATH di inisialisasi Python.Untuk menyiasati itu bisa Anda gunakan
pkg_resources.find_distributions(path_to_search)
. Ini pada dasarnya mencari distribusi yang dapat diimpor jikapath_to_search
berada di sistem PATH.Kita dapat beralih melalui generator ini seperti ini:
Ini akan mengembalikan kamus yang memiliki modul sebagai kunci dan versinya sebagai nilai. Pendekatan ini dapat diperluas lebih dari sekadar nomor versi.
Terima kasih kepada Jakub Kukul karena menunjuk ke arah yang benar
sumber
Menulis jawaban ini untuk pengguna windows. Seperti yang disarankan dalam semua jawaban lain, Anda dapat menggunakan pernyataan sebagai:
Tetapi, ada beberapa modul yang tidak mencetak versinya bahkan setelah menggunakan metode di atas. Jadi, yang bisa Anda lakukan adalah:
sumber
Anda dapat menginstal beberapa paket seperti ini terlebih dahulu dan kemudian memeriksa versinya
itu akan memberi Anda versi paket
sumber