Saya menginstal paket dari requirements.txt
pip install -r requirements.txt
The requirements.txt
berkas berbunyi:
Pillow
lxml
cssselect
jieba
beautifulsoup
nltk
lxml
adalah satu-satunya paket gagal untuk menginstal dan ini menyebabkan semuanya gagal (hasil yang diharapkan seperti yang ditunjukkan oleh larsk di komentar). Namun, setelah lxml
gagal pip
masih berjalan melalui dan mengunduh sisa paket.
Dari apa yang saya mengerti pip install -r requirements.txt
perintah akan gagal jika ada paket yang terdaftar dalam requirements.txt
gagal untuk menginstal.
Apakah ada argumen yang bisa saya sampaikan ketika menjalankan pip install -r requirements.txt
untuk mengatakannya untuk menginstal apa yang bisa dan melewatkan paket yang tidak bisa, atau untuk keluar segera setelah melihat sesuatu gagal?
requirements.txt
dalamnya mungkin diperlukan , maka masuk akalpip
jika gagal jika paket tersebut tidak dapat diinstal. Jika kode tetap dijalankan tanpa paket itu maka itu hampir tidak menjadi persyaratan. Pemangkasan paket gagal secara acakrequirements.txt
sepertinya hanya akan menyebabkan masalah dengan dependensi yang hilang.pip install -r <some file>
alur kerja yang sama untuk membakukan pembuatan lingkungan yang sesuai.Jawaban:
Menjalankan setiap baris
pip install
mungkin merupakan solusi.Catatan:
-a
parameter tidak tersedia di MacOS, jadi kucing tua lebih mudah dibawa-bawa.sumber
cat requirements.txt | xargs -n 1 pip install
cat requirements.txt | cut -f1 -d"#" | sed '/^\s*$/d' | xargs -n 1 pip install
untuk menghapus apa pun di komentar dan menyingkirkan baris kosong.xargs
, ada-a
opsi flag, yang memungkinkanxargs
membaca argumen dari file, jadi ini bisa dilakukan sebagaixargs -n 1 -a requirements.txt pip install
. Mencegah UUOC dan pipa ledeng yang berlebihanFOR /F %k in (requirements.txt) DO pip install %k
-a
bendera, pertimbangkan< requirements.txt xargs -n 1 pip install
, atau jika Anda tidak suka pengalihan di depanxargs -n 1 pip install < requirements.txt
,. :-)Solusi ini menangani baris kosong, baris spasi putih, # baris komentar, baris spasi putih-kemudian # komentar di requirement.txt Anda.
Kiat ujung atas jawaban ini untuk sihir sed.
sumber
pip freeze
bukancat requirements.txt
.Untuk Windows:
versi pip> = 18
versi pip <18
sumber
The
xargs
karya solusi, tetapi dapat memiliki masalah portabilitas (BSD / GNU) dan / atau menjadi rumit jika Anda memiliki komentar atau baris kosong dalam file kebutuhan Anda.Adapun usecase di mana perilaku seperti itu akan diperlukan, saya menggunakan misalnya dua file persyaratan terpisah, satu yang hanya daftar dependensi inti yang harus selalu diinstal dan file lain dengan dependensi non-inti yang ada di 90% dari kasus tidak diperlukan untuk sebagian besar usecases. Itu akan menjadi setara dengan
Recommends
bagian dari paket debian.Saya menggunakan skrip shell berikut (
sed
harus) untuk menginstal dependensi opsional :sumber
Terima kasih, Etienne Prothon untuk kasing windows.
Tetapi, setelah memutakhirkan ke pip 18, paket pip tidak mengekspos utama ke publik. Jadi, Anda mungkin perlu mengubah kode seperti ini.
sumber
Untuk Windows:
requirements.txt
file Anda di dalamnya..py
ekstensi, misalnya,install_packages.py
python install_packages.py
Anda dapat menambahkan parameter lain dalam fungsi instal. Suka:
main(['install'] + [str(package)] + ['--update'])
sumber