Bagaimana Anda bisa secara terprogram mendapatkan daftar dependensi paket Python?
Standar setup.py
telah mendokumentasikannya, tetapi saya tidak dapat menemukan cara mudah untuk mengaksesnya dari Python atau baris perintah.
Idealnya, saya mencari sesuatu seperti:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
atau:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Catatan, saya tidak berbicara tentang mengimpor paket dan menemukan semua modul yang direferensikan. Meskipun ini mungkin menemukan sebagian besar paket dependen, ini tidak akan dapat menemukan nomor versi minimum yang diperlukan. Itu hanya disimpan di setup.py.
Jawaban:
Selain
pip show [package name]
perintah, adapipdeptree
.Kerjakan saja
lalu lari
dan itu akan menunjukkan ketergantungan Anda dalam bentuk pohon, misalnya,
Proyek ini berlokasi di https://github.com/naiquevin/pipdeptree , di mana Anda juga akan menemukan informasi penggunaan.
sumber
pipdeptree
menunjukkan dependensi dari semua paket yang diinstal , tidak hanya paket yang diberikan. Meskipun Anda dapat memfilter--json
keluarannya, itu masih tergantung pada paket yang akan diinstal.requirements.txt
:)-p
opsi untuk hanya memilih beberapa paket yang dependensinya ingin Anda jelajahi.pipdeptree
sangat membantu saat mengoptimalkanrequirements.txt
.$ pipdeptree | grep -P '^\w+'
Ini hanya menghasilkan paket tingkat atas. Info lebih lanjut di siniCoba gunakan
show
perintah dipip
, misalnya:Perbarui (ambil deps dengan versi yang ditentukan):
sumber
Requires
bagian$ pip3 show beautifulsoup4
acara kosongRequires:
untuk saya - bukankah beautifulsoup4 bergantung pada apa pun?beautifulsoup4
,.Beberapa jawaban di sini menunjukkan pip diimpor untuk digunakan dalam program. The dokumentasi untuk pip sangat menyarankan terhadap penggunaan ini dari pip .
Alih-alih mengakses
pkg_resources
melalui impor pip, Anda sebenarnya dapat mengimporpkg_resources
secara langsung dan menggunakan logika yang sama (yang sebenarnya merupakan salah satu solusi yang disarankan dalam dokumen pip yang ditautkan untuk siapa saja yang ingin melihat informasi meta paket secara terprogram).Jika Anda mengalami kesulitan mencari tahu persis apa nama paket Anda,
WorkingSet
contoh dikembalikan olehpkg_resources.working_set
implements__iter__
sehingga Anda dapat mencetak semuanya dan mudah-mudahan melihat milik Anda di sana :)yaitu
Ini berfungsi dengan python 2 dan 3 (meskipun Anda harus menyesuaikan pernyataan cetak untuk python2)
sumber
(INI ADALAH JAWABAN LEGACY DAN HARUS DIHINDARI UNTUK VERSI PIP MODERN DAN KIRI DI SINI UNTUK REFERENSI KE VERSI PIP LAMA) Jawaban Alex bagus (+1). Dengan python:
harus mengembalikan sesuatu seperti
di mana twisted adalah nama paketnya, yang dapat Anda temukan di kamus:
untuk mencantumkan semuanya:
harus memberi Anda daftar seperti ini:
sumber
_vendor
atribut tampaknya tidak ada di versi pip19.1.1
(Edit: Baiklah, tampaknya telah pindah kepkg_resources
paket dalam versi python terbaru!)pip show
sebagian, bukan yang lain). Baik menggunakanpip show
, pipdeptree atau melihat jawaban Jordan Mackie menggunakan setuptools 'pkg_resources
langsung.Gunakan https://libraries.io/ . Ini adalah tempat yang baik untuk menjelajahi dependensi sebelum menginstal menggunakan pip.
Misalnya. Ketik google-cloud-storage dan cari, lalu Anda dapat menemukan halaman perpustakaan ( https://libraries.io/rubygems/google-cloud-storage ). Pilih versi yang ingin Anda jelajahi dependensinya dari 'Rilis' (defaultnya adalah yang terbaru), Di bawah 'Dependencies' Anda dapat menemukan daftar dependensi dan versi yang didukungnya.
sumber
Coba ini menurut artikel ini di python:
Ini akan menunjukkan seperti:
sumber