Come aggiornare / aggiornare un pacchetto usando pip?


171

Qual è il modo per aggiornare un pacchetto usando pip? quelli non funzionano:

pip update
pip upgrade

So che questa è una domanda semplice, ma è necessaria in quanto non è così facile da trovare (la documentazione pip non viene visualizzata e altre domande da overflow dello stack sono rilevanti ma non sono esattamente al riguardo)

Risposte:


280

Il modo è

sudo pip install [package_name] --upgrade

o in breve

sudo pip install [package_name] -U

sudo chiederà di inserire la password di root per confermare l'azione.

Se non disponi di una password di root (se non sei l'amministratore), dovresti probabilmente lavorare con virtualenv e quindi eliminare sudo:

pip install [package_name] --upgrade

2
Come pip install --helpha detto: -U, --upgrade Upgrade all specified packages to the newest available version.. Quindi dovrebbe essere il maiuscolo -U, non -u.
Peter Liang,

25
Perché questa opzione comune non viene mostrata quando lo fai pip --helpè un indovinello per me ...
Husky,

3
@Husky - Sì, sulla stessa linea, perché non fanno solo un upgradecomando che fa quello che vedi in risposta è una buona domanda. (Significato, se usi "upgrade" fa semplicemente quello che fa install+ --upgrade.) Un "alias" di sorta.
bshea,

10

Per un pacchetto non specifico e una soluzione più generale è possibile consultare pip-review , uno strumento che controlla quali pacchetti potrebbero / dovrebbero essere aggiornati.

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y

3
Anche se questo non risponde direttamente alla domanda, potrebbe essere quello che alcune persone effettivamente cercano quando cercano questo messaggio.
borgr,

8

tl; dr script per aggiornare tutti i pacchetti installati

Se si desidera aggiornare solo un pacchetto, fare riferimento alla risposta di @ borgr . Trovo spesso necessario, o almeno piacevole, aggiornare tutti i miei pacchetti contemporaneamente. Attualmente pip non supporta nativamente quell'azione, ma con gli script sh è abbastanza semplice. Si utilizza pip list, awk(o cute tail) e si sostituisce il comando. Il mio normale one-liner è:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

Questo richiederà la password di root. Se non hai accesso a ciò, l' --useropzione di pipo virtualenv potrebbe essere qualcosa da esaminare.


7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Salva come xx.py
Quindi esegui Python3 xx.py
Ambiente: python3.5 + pip10.0 +


Mi piace questa soluzione. Ho aggiunto una stampa per mostrare il nome del pacchetto durante l'aggiornamento:print('updating ', pkg['name'])
pvoj

4

Per aggiornare pip per Python3.4 +, è necessario utilizzare pip3 come segue:

sudo pip3 install pip --upgrade

Questo aggiornerà pip situato in: /usr/local/lib/python3.X/dist-packages

Altrimenti, per aggiornare pip per Python2.7, useresti pip come segue:

sudo pip install pip --upgrade

Questo aggiornerà pip situato in: /usr/local/lib/python2.7/dist-packages


7
Questo non è ciò che l'OP ha chiesto. Sta chiedendo come aggiornare un pacchetto specifico, non PIP stesso.
commadelimitato il

tuttavia sembra essere utile avere qui tra queste altre risposte
uhoh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.