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.