Bagaimana cara mengupgrade semua paket python saya dari file requirement.txt menggunakan perintah pip?
dicoba dengan perintah di bawah ini
$ pip install --upgrade -r requirements.txt
Karena, paket python diakhiri dengan nomor versi ( Django==1.5.1
) yang sepertinya tidak diupgrade. Apakah ada pendekatan yang lebih baik daripada mengedit file requirement.txt secara manual?
EDIT
Seperti yang disebutkan Andy dalam jawabannya, paket disematkan ke versi tertentu, oleh karena itu tidak mungkin mengupgrade paket melalui perintah pip.
Tapi, kita bisa mencapai ini dengan pip-tools
menggunakan perintah berikut.
$ pip-review --auto
ini secara otomatis akan mengupgrade semua paket dari requirement.txt (pastikan untuk menginstal pip-tools
menggunakan perintah pip install).
python
pip
packages
requirements.txt
abhiomkar
sumber
sumber
pip-compile -U requirements.txt
.Jawaban:
Tidak. File persyaratan Anda telah disematkan ke versi tertentu. Jika persyaratan Anda disetel ke versi itu, Anda tidak boleh mencoba meningkatkan versi di luar versi tersebut. Jika Anda membutuhkan meningkatkan, Anda perlu beralih ke versi yang tidak disematkan di file persyaratan Anda.
Contoh:
Ini akan meningkatkan lxml ke versi yang lebih baru dari 2.2.0
Ini akan meningkatkan lxml ke versi terbaru antara 2.2.0 dan 2.3.0.
sumber
sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt
akan mengganti semua==
dengan>=
Anda dapat mencoba:
Anda juga dapat mengabaikan paket yang diinstal dan menginstal yang baru:
sumber
-I
and--ignore-installed
adalah flag yang sama dan tentu saja tidak valid untuk memiliki a,
di sana. Dengan cara ini tidak akan terjadi penurunan versi selama penginstalan dan setelah penginstalan persyaratan selesai, seseorang dapat mengupgrade paket yang diinstal menggunakanpip-review --auto
.Saya sudah menjawab pertanyaan ini di sini . Inilah solusi saya:
Karena tidak ada cara mudah untuk mengupgrade paket demi paket, dan mengupdate file requirement.txt, saya menulis pip-upgrader ini yang juga mengupdate versi di
requirements.txt
file Anda untuk paket yang dipilih (atau semua paket).Instalasi
Pemakaian
Aktifkan virtualenv Anda (penting, karena itu juga akan menginstal versi baru dari paket yang ditingkatkan di virtualenv saat ini).
cd
ke dalam direktori proyek Anda, lalu jalankan:Penggunaan lanjutan
Jika persyaratan ditempatkan di lokasi non-standar, kirimkan sebagai argumen:
Jika Anda sudah tahu paket apa yang ingin Anda tingkatkan, cukup kirimkan sebagai argumen:
Jika Anda perlu meningkatkan ke versi pra-rilis / pasca-rilis, tambahkan
--prerelease
argumen ke perintah Anda.Pengungkapan penuh: Saya menulis paket ini.
sumber
Saya sarankan untuk membekukan semua dependensi Anda untuk memiliki build yang dapat diprediksi .
Saat melakukan itu, Anda dapat memperbarui semua dependensi sekaligus seperti ini:
Setelah melakukan hal di atas, menguji proyek Anda dengan set baru paket dan akhirnya berkomitmen dalam
requirements.txt
berkas ke repositori.sumber
Saya baru saja melakukan hal yang sama ... menggunakan satu baris kecil ini untuk melakukan pekerjaan:
yang:
packages=$(cat requirements.txt | sed 's/==.*//g')
membuat daftar nama paket saat ini di requirement.txt (menghapus versinya).echo $packages | xargs pip3 install -U
kemudian meneruskan semua paket sebagai argumen ke pip3 untuk ditingkatkan.freeze=$(pip3 freeze);
Mendapatkan semua versi paket saat ini dalam format yang diperlukan untuk Requirement.txtfor p in $(echo $packages)
kemudian melakukan iterasi melalui nama paketecho $freeze | grep -E "^${p}==" >> requirements.new
mendapatkan baris versi paket dari keluaran pip freeze yang cocok dengan paket dan menulis ke requirement.txt baruIni memiliki keuntungan tambahan dalam menjaga urutan persyaratan asli.txt. :)
Semoga ini membantu!
sumber
Karena saya tidak dapat melakukannya menggunakan bash, saya menulis modul python untuk membuat file persyaratan baru tanpa versi dan menggunakannya:
Kemudian instal libs dari file baru
pip install -U -r requirements-prod-no-version.pip
Terakhir, bekukan versinya ke file aslinya
pip freeze > requirements-prod.pip
sumber
Solusi lain adalah dengan menggunakan paket persyaratan peningkatan
Dan kemudian jalankan:
Itu akan meningkatkan semua paket yang tidak ada di versi terbaru mereka, dan juga membuat persyaratan yang diperbarui di bagian akhir.
sumber
1) Untuk mengupgrade file yang diinstal pip dari reqs.txt tambahkan > = sebagai pengganti == ini akan memberi tahu pip untuk menginstal lib lebih besar dari atau sama dengan versi yang Anda minta, di sini dengan menginstal versi terbaru dari library yang diminta
1.a) ** Jawaban saya untuk utas ** Dengan menambahkan
py -m pip install -r
reqs.txt ke restart harian ... atau sesuatu yang bersifat alami, Anda dapat memperbarui libs yang diinstal. Disimpulkan oleh Andy Perfectly-Alasan saya untuk memasuki utas ini adalah untuk mencari informasi tentang cara memperbarui virtual env base pip (biasanya 10.0.03 untuk saya ??)
dengan harapan dapat memenuhi masalah yang saya dapat memperoleh salah satu dari dua solusi
Berkat Andy, saya telah memenuhi kebutuhan B
Dengan menambahkan pip > = versi yang diminta di reqs.txt
setelah instance dari Virtual-Environment baru || re-instantiation dari Venv sebelumnya
py -m venv devenv
untuk menyiapkan env dev baru
evenv\scripts\activate.bat
untuk mengaktifkan dev env
python -m pip install -r requirenments.txt
untuk menginstal base libs
keluaran yeilds
Maaf untuk Brain Dump, Semoga ini bisa membantu seseorang :)
🤳 Austin 👨🎤🚀🥊
sumber
Jawaban kedua adalah yang paling berguna tetapi yang ingin saya lakukan adalah mengunci beberapa paket sementara yang lain memiliki versi terbaru (misalnya youtube-dl).
Contohnya
requirements.txt
akan terlihat seperti ini (~ berarti kompatibel):Kemudian di terminal, gunakan perintah
pip install --upgrade -r requirements.txt
Ini memastikan bahwa Pillow akan tetap di 6.2.2, permintaan akan ditingkatkan ke versi terbaru 2.22.x (jika tersedia), dan versi terbaru youtube-dl akan diinstal jika belum.
sumber
Saya kira solusi paling sederhana adalah membuat persyaratan.txt dengan:
sumber
Jika Anda menginstal apa pun dalam proyek django Anda dan setelah instalasi Anda ingin memperbarui file persyaratan Anda, perintah ini dapat memperbarui Anda file Requirement.txt pip freeze> Requirement.txt
jika file persyaratan Anda tidak ada dalam proyek Anda, Anda dapat menggunakan perintah ini untuk membuat file requirement.txt baru pip freeze> requirement.txt
sumber
Saya mengedit persyaratan.txt seperti di bawah ini dan menjalankan $ sh ./requirements.txt
sumber