Tüm Python paketlerini pip
ile tek seferde yükseltmek mümkün mü?
Not: resmi sorun izleyicide bunun için bir özellik isteği bulunmaktadır.
Henüz yerleşik bir bayrak yok, ancak
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Not: Bunun için sonsuz potansiyel varyasyon vardır. Bu cevabı kısa ve basit tutmaya çalışıyorum, ancak lütfen yorumlarda varyasyonlar önerin!
Eski pip
sürümlerinde bunun yerine bunu kullanabilirsiniz:
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
grep, @jawache tarafından önerildiği gibi düzenlenebilir ("-e") paket tanımlarını atlamak içindir. (Evet,
grep+
cutyerine
sedveya
awkveya
perl` veya ... kullanabilirsiniz).
xargsiçin
-n1` bayrağı, bir paketin güncellenmesi başarısız olursa her şeyin durdurulmasını önler (teşekkürler @andsens).
Aşağıdaki Python kodunu kullanabilirsiniz. Ip freeze`den farklı olarak, bu uyarıları ve FIXME hatalarını yazdırmayacaktır. pip < 10.0.1 için
import pip
from subprocess import call
packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)
Pip >= 10.0.1 için
import pkg_resources
from subprocess import call
packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)
İşte rbp'nin "düzenlenebilir" ve geliştirme dağıtımlarını atlayan cevabı üzerine benim varyasyonum. Orijinalinin iki kusurunu paylaşıyor: gereksiz yere yeniden indiriyor ve yeniden yüklüyor; ve bir paketteki bir hata, ondan sonraki her paketin yükseltilmesini engelleyecektir.
pip freeze |sed -ne 's/==.*//p' |xargs pip install -U --
İlgili hata raporları, bitbucket'tan geçişten sonra biraz dağınık: