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).

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

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

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 .


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 +


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


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,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.