Wie aktualisiere / aktualisiere ich ein Paket mit pip?

167

Wie kann ein Paket mit pip aktualisiert werden? die funktionieren nicht:

pip update
pip upgrade

Ich weiß, dass dies eine einfache Frage ist, aber sie wird benötigt, da sie nicht so leicht zu finden ist (Pip- Dokumentation wird nicht angezeigt und andere Fragen aus dem Stapelüberlauf sind relevant, beziehen sich aber nicht genau darauf).

borgr
quelle

Antworten:

273

Der Weg ist

sudo pip install [package_name] --upgrade

oder kurz gesagt

sudo pip install [package_name] -U

sudo Sie werden aufgefordert, Ihr Root-Passwort einzugeben, um die Aktion zu bestätigen.

Wenn Sie kein Root-Passwort haben (wenn Sie nicht der Administrator sind), sollten Sie wahrscheinlich mit virtualenv arbeiten und dann Folgendes löschensudo :

pip install [package_name] --upgrade
borgr
quelle
2
Wie pip install --helpgesagt : -U, --upgrade Upgrade all specified packages to the newest available version.. So soll es der obere Fall sein -U, nicht -u.
Peter Liang
25
Warum eine so häufige Option nicht angezeigt wird, wenn Sie dies tun, pip --helpist mir ein Rätsel ...
Husky
3
@Husky - Ja, in diesem Sinne upgradeist es eine gute Frage , warum sie nicht einfach einen Befehl ausführen, der das tut, was Sie als Antwort sehen. (Das heißt, wenn Sie "Upgrade" verwenden, wird einfach das getan, was install+ --upgradetut.) Eine Art "Alias".
bshea
10

Für ein unspezifisches Paket und eine allgemeinere Lösung können Sie sich Pip-Review ansehen , ein Tool, das prüft, welche Pakete aktualisiert werden könnten / sollten.

$ 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
als ob
quelle
3
Dies beantwortet die Frage zwar nicht direkt, aber es könnte sein, wonach einige Leute tatsächlich suchen, wenn sie nach dieser Nachricht suchen.
Borgr
8

tl; dr Skript zum Aktualisieren aller installierten Pakete

Wenn Sie nur ein Paket aktualisieren möchten, lesen Sie die Antwort von @ borgr . Ich finde es oft notwendig oder zumindest erfreulich, alle meine Pakete auf einmal zu aktualisieren. Derzeit unterstützt pip diese Aktion nicht von Haus aus, aber mit sh-Skripten ist dies einfach genug. Sie verwenden pip list, awk(oder cutund tail) und Befehlsersetzung. Mein normaler Einzeiler ist:

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

Dies fragt nach dem Root-Passwort. Wenn Sie keinen Zugriff darauf haben, sollten Sie die --userOption pipoder virtualenv prüfen .

Aiden Waldmeister
quelle
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)

Speichern als xx.py
Führen Sie dann Python3 xx.py aus.
Umgebung: python3.5 + pip10.0 +

Fofdsf
quelle
Ich mag diese Lösung. Ich habe einen Ausdruck hinzugefügt, um den Paketnamen während des Updates print('updating ', pkg['name'])
anzuzeigen
4

Um pip für Python3.4 + zu aktualisieren, müssen Sie pip3 wie folgt verwenden:

sudo pip3 install pip --upgrade

Dadurch wird pip unter /usr/local/lib/python3.X/dist-packages aktualisiert

Andernfalls würden Sie zum Aktualisieren von pip für Python2.7 pip wie folgt verwenden:

sudo pip install pip --upgrade

Dadurch wird pip unter folgender Adresse aktualisiert: /usr/local/lib/python2.7/dist-packages

Nick D.
quelle
7
Dies hat das OP nicht verlangt. Er fragt, wie ein bestimmtes Paket aktualisiert werden soll, nicht PIP selbst.
Commadelimited
Trotzdem scheint es hilfreich zu sein, hier unter diesen anderen Antworten zu sein
ähm,