Diberi nama paket Python yang dapat diinstal dengan pip , apakah ada cara untuk mengetahui daftar semua versi yang memungkinkan yang bisa dipasang oleh pip? Sekarang ini coba-coba.
Saya mencoba untuk menginstal versi untuk perpustakaan pihak ketiga, tetapi versi terbaru terlalu baru, ada beberapa perubahan yang dibuat tidak kompatibel. Jadi saya ingin entah bagaimana memiliki daftar semua versi yang diketahui pip, sehingga saya dapat mengujinya.
pip install pylibmc==
sempurna.Jawaban:
(Pembaruan: Pada Maret 2020, banyak orang telah melaporkan bahwa kuning telur, dipasang melalui
pip install yolk3k
, hanya mengembalikan versi terbaru. Jawaban Chris tampaknya memiliki banyak upvotes dan bekerja untuk saya)Script di pastebin berhasil. Namun itu tidak terlalu nyaman jika Anda bekerja dengan beberapa lingkungan / host karena Anda harus menyalin / membuatnya setiap waktu.
Solusi all-around yang lebih baik adalah menggunakan yolk3k , yang tersedia untuk diinstal dengan pip. Misalnya untuk melihat versi Django apa yang tersedia:
yolk3k
adalah fork dari yang asliyolk
yang berhenti dikembangkan pada tahun 2012 . Meskipunyolk
tidak lagi dipertahankan (seperti yang ditunjukkan dalam komentar di bawah),yolk3k
tampaknya dan mendukung Python 3.Catatan: Saya tidak terlibat dalam pengembangan yolk3k. Jika sesuatu tampaknya tidak berfungsi sebagaimana mestinya, meninggalkan komentar di sini tidak akan membuat banyak perbedaan. Gunakan pelacak masalah yolk3k sebagai gantinya dan pertimbangkan untuk mengirimkan perbaikan, jika memungkinkan.
sumber
Untuk pip> = 9.0 gunakan
- semua versi yang tersedia akan dicetak tanpa benar-benar mengunduh atau menginstal paket tambahan apa pun.
Untuk pip <9.0 digunakan
di mana
blork
dapat berupa string apa pun yang bukan nomor versi yang valid .sumber
pip install --only-binary :all: pylibmc
akan mencantumkan semua versi pylibmc yang tersedia sebagai paket biner.pip install pylibmc==9999999 | tr ', ' "\n" | sort -n
Pembaruan:
Pada Sep 2017 metode ini tidak lagi berfungsi:
--no-install
dihapus di pip 7Gunakan
pip install -v
, Anda bisa melihat semua versi yang tersediaUntuk tidak menginstal paket apa pun, gunakan salah satu solusi berikut:
atau
Diuji dengan pip 1.0
sumber
pip 1.5.4
memberiDEPRECATION: --no-install, --no-download, --build, and --no-clean are deprecated. See https://github.com/pypa/pip/issues/906.
dan tidak menampilkan versi yang tersedia untuk paket yang sudah diinstal.-v
. Sisa jawaban saya adalah untuk menghindari efek tambahan (instal / unduh). Untuk pkg yang terinstal, cukup tambahkan --upgrade. Lalu, Anda dapat membuat virtualenv terpisah untuk membuat semuanya lebih sederhana.no such option: --no-install
Anda tidak memerlukan paket pihak ketiga untuk mendapatkan informasi ini. pypi menyediakan umpan JSON sederhana untuk semua paket di bawah
Berikut adalah beberapa kode Python hanya menggunakan pustaka standar yang mendapatkan semua versi.
Kode itu dicetak (per 23 Februari 2015):
sumber
versions = [x for x in data["releases"] if any([y["python_version"] in ['cp26', '2.6'] for y in data["releases"][x]])]
menemukan versi yang kompatibel dengan Python 2.6. (Saya tidak melihat dicp26
mana pun, tetapi beberapa paket telahcp27
jadi saya berspekulasi bahwa ini mungkin ada dalam paket lain.)curl -s https://pypi.python.org/pypi/{PKG_NAME}/json | jq -r '.releases | keys[]' | sort -t. -k 1,1n -k 2,2n -k 3,3n
ValueError
pengecualian untuk beberapa paket yang mengikuti skema versi yang tidak terlalu ketat. Untuk memperbaikinya untuk paket-paket ini, lihat inti ini .Saya datang dengan skrip bash sederhana-mati. Terima kasih kepada penulis jq .
sumber
curl
bekerja, mungkin karena kesalahan sertifikat.wget --no-check-certificate
bekerja, tetapi bahkancurl -k --insecure
tidak menghasilkan apa-apa. Peringatan yang saya dapat denganwget
mengatakanERROR: certificate common name `www.python.org´ doesn´t match requested host name `pypi.python.org´.
sort -V
tidak bekerja pada OSX dengan versi homebrewjq
Anda bisa menggunakan paket yolk3k, bukan kuning telur. yolk3k adalah garpu dari kuning telur asli dan mendukung kedua python2 dan 3.
https://github.com/myint/yolk
sumber
yolk -V attest
Attest 0.5.3
Setelah melihat kode pip untuk sementara waktu, sepertinya kode yang bertanggung jawab untuk menemukan paket dapat ditemukan di
PackageFinder
kelas dipip.index
. Metodenyafind_requirement
mencari versi aInstallRequirement
, tetapi sayangnya hanya mengembalikan versi terbaru.Kode di bawah ini hampir merupakan salinan 1: 1 dari fungsi aslinya, dengan pengembalian dalam baris 114 diubah untuk mengembalikan semua versi.
Skrip mengharapkan satu nama paket sebagai argumen pertama dan satu-satunya dan mengembalikan semua versi.
http://pastebin.com/axzdUQhZ
Saya tidak dapat menjamin kebenarannya, karena saya tidak terbiasa dengan kode pip. Tapi semoga ini membantu.
Output sampel
Kode:
sumber
Anda dapat menggunakan skrip Python 3 kecil ini (hanya menggunakan modul perpustakaan standar) untuk mengambil daftar versi yang tersedia untuk paket dari PyPI menggunakan JSON API dan mencetaknya dalam urutan kronologis terbalik. Tidak seperti beberapa solusi lainnya Python diposting di sini, ini tidak putus versi longgar seperti
django
's2.2rc1
atauuwsgi
' s2.0.17.1
:Simpan skrip dan jalankan dengan nama paket sebagai argumen, misalnya:
sumber
https://pypi.python.org/pypi/Django/ - berfungsi untuk paket yang pengelolanya memilih untuk menampilkan semua paket https://pypi.python.org/simple/pip/ - bagaimanapun juga harus melakukan triknya (daftarkan semua tautan)
sumber
Ini berfungsi untuk saya di OSX:
Ini mengembalikan daftar satu per baris:
Atau untuk mendapatkan versi terbaru yang tersedia:
Perlu diingat
gsort
harus diinstal (pada OSX) untuk mengurai versi. Anda dapat menginstalnya denganbrew install coreutils
sumber
Proyek saya
luddite
memiliki fitur ini.Contoh penggunaan:
Ini mencantumkan semua versi paket yang tersedia, dengan menanyakan API json https://pypi.org/
sumber
requirements.txt
file untuk paket-paket yang kedaluwarsa. Ini lebih dari beberapa baris kode. Untuk memeriksarequirements.txt
file, Anda memerlukan fungsionalitas untuk mendaftar semua versi paket. Bagian ini sengaja dipisahkan, dan bagian dari API publik luddite. Dan itu sumber Apache License 2.0, saya pikir itu tidak benar-benar adil untuk memanggil paket perangkat lunak "kotak hitam".Saya tidak beruntung
yolk
,yolk3k
ataupip install -v
akhirnya saya menggunakan ini (disesuaikan dengan Python 3 dari jawaban eric chiang):sumber
StrictVersion
tidak akan bekerja untuk banyak paket (django
,uwsgi
,psycopg2
untuk beberapa nama). Anda dapat menggunakanparse_version()
darisetuptools
(lihat jawaban saya untuk contoh).Solusi alternatif adalah dengan menggunakan API Gudang:
https://warehouse.readthedocs.io/api-reference/json/#release
Misalnya untuk Flask:
akan dicetak:
sumber
bash
Skrip sederhana yang hanya bergantung padapython
dirinya sendiri (saya berasumsi bahwa dalam konteks pertanyaan itu harus diinstal) dan salah satucurl
atauwget
. Ini memiliki asumsi bahwa Anda memilikisetuptools
paket yang diinstal untuk mengurutkan versi (hampir selalu diinstal). Itu tidak bergantung pada dependensi eksternal seperti:jq
yang mungkin tidak ada;grep
danawk
itu mungkin berperilaku berbeda di Linux dan macOS.Versi yang sedikit lebih panjang dengan komentar.
Masukkan nama paket ke dalam variabel:
Dapatkan versi (menggunakan
curl
):Dapatkan versi (menggunakan
wget
):Cetak versi yang diurutkan:
sumber
Pilihan saya adalah kombinasi dari beberapa jawaban yang diposting, dengan beberapa modifikasi untuk membuatnya lebih mudah digunakan dari dalam lingkungan python yang berjalan.
Idenya adalah untuk memberikan perintah yang sama sekali baru (dimodelkan setelah perintah instal) yang memberi Anda contoh dari pencari paket untuk digunakan. Sisi baiknya adalah ini berfungsi dengan, dan menggunakan, indeks apa pun yang didukung pip dan membaca file konfigurasi pip lokal Anda, sehingga Anda mendapatkan hasil yang benar seperti ketika Anda menginstal pip biasa.
Saya telah berupaya membuatnya kompatibel dengan pip v 9.x dan 10.x .. tetapi hanya mencobanya pada 9.x
https://gist.github.com/kaos/68511bd013fcdebe766c981f50b473d4
Contoh output
sumber