Ist es möglich, alle Python-Pakete auf einmal zu aktualisieren mit pip
?
Notiz: dass es gibt eine Feature-Anfrage dafür auf dem offiziellen Issue-Tracker.
thedjpetersen
Ist es möglich, alle Python-Pakete auf einmal zu aktualisieren mit pip
?
Notiz: dass es gibt eine Feature-Anfrage dafür auf dem offiziellen Issue-Tracker.
Sie können den folgenden Python-Code verwenden. nicht wie pip freeze
werden keine Warnungen und FIXME-Fehler gedruckt.
Für Pip < 10.0.1
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)
Für Pip >= 10.0.1
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)
Das funktioniert erstaunlich gut… Es ist immer so befriedigend, wenn eine Aufgabe WIRKLICH dauert lange Zeit… und gibt Ihnen eine Bündel von neuen Sachen! PS: Führen Sie es als root aus, wenn Sie OS X verwenden!
– Alex Grau
31. Dezember 2011 um 4:13 Uhr
Gibt es keine Möglichkeit, Pip zu installieren, ohne einen Unterprozess aufzurufen? Etwas wie import pip
pip.install('packagename')
?
– Endolith
6. März 2012 um 16:18 Uhr
@BenMezger: Sie sollten wirklich keine Systempakete in Ihrer virtuellen Umgebung verwenden. Sie sollten auch wirklich nicht mehr als eine Handvoll vertrauenswürdiger, bekannter Programme als root ausführen. Führen Sie Ihre virtualenvs mit –no-site-packages aus (Standard in neueren Versionen).
– jeffcook2150
26. August 2013 um 2:01 Uhr
Daumen hoch dafür, die gewählte Antwort (oben) schlägt fehl, wenn ein Paket nicht mehr gefunden werden kann. Dieses Skript fährt einfach mit den nächsten Paketen fort, wunderbar.
– Josch
3. Juni 2014 um 12:42 Uhr
@hauzer: Es unterstützt Python 3 nicht. Obwohl es könnte ein Fehler sein
– jfs
25. April 2014 um 0:27 Uhr
@mkoistinen Es ist ein gutes Tool, aber bis es in PIP zusammengeführt wird, bedeutet es, etwas Zusätzliches zu installieren, was nicht jeder tun möchte.
– Wernacht
22. Juli 2014 um 8:50 Uhr
@Daniel: pip-tools funktioniert nicht mehr, pip-review (fork of pip-tools) funktioniert.
– jfs
12. Oktober 2015 um 6:00 Uhr
pip-review funktioniert einwandfrei (zumindest für Python Version 3.5.0)
– FredrikHedman
13. Februar 2016 um 12:13 Uhr
So aktualisieren Sie alles ohne interaktiven Modus: pip-review --local --auto
– Dlamini
21. Mai 2018 um 1:07 Uhr
azazel spricht
Folgendes funktioniert unter Windows und sollte auch für andere gut sein ($
ist das Verzeichnis, in dem Sie sich befinden, in der Eingabeaufforderung. Zum Beispiel, C:/Benutzer/Benutzername).
Tun
$ pip freeze > requirements.txt
Öffnen Sie die Textdatei, ersetzen Sie die ==
mit >=
oder lassen Sie es für Sie tun:
$ sed -i 's/==/>=/g' requirements.txt
und ausführen:
$ pip install -r requirements.txt --upgrade
Wenn Sie ein Problem mit einem bestimmten Paket haben, das das Upgrade blockiert (NumPy manchmal), gehen Sie einfach in das Verzeichnis ($), kommentieren Sie den Namen aus (fügen Sie eine #
davor) und führen Sie das Upgrade erneut aus. Sie können diesen Abschnitt später wieder auskommentieren. Dies eignet sich auch hervorragend zum Kopieren globaler Python-Umgebungen.
Ein anderer Weg:
Ich mag auch die Pip-Review-Methode:
py2
$ pip install pip-review
$ pip-review --local --interactive
py3
$ pip3 install pip-review
$ py -3 -m pip-review --local --interactive
Sie können „a“ auswählen, um alle Pakete zu aktualisieren; Wenn ein Upgrade fehlschlägt, führen Sie es erneut aus und es wird mit dem nächsten fortgesetzt.
Sie sollten entfernen requirements.txt
‘s =={version}
. Zum Beispiel: python-dateutil==2.4.2
zu python-dateutil
für alle Linien.
– Youngminz
15. Mai 2016 um 5:28 Uhr
Ich habe festgestellt, dass dies die Pakete unter macOS nicht wirklich aktualisiert hat.
– jkooker
8. März 2017 um 14:42 Uhr
@youngminz Ich würde ein schnelles ‘Replace all “==” > “>=” ‘ in Ihrem Editor/ide empfehlen, bevor Sie ‘pip install …’ ausführen, um dies zu beheben
– Amaury Liet
16. März 2017 um 11:12 Uhr
für Linux: $ pip freeze | cut -d '=' -f1> requirements.txt
um die Version zu entfernen
– Cavaz
14. Januar 2018 um 18:22 Uhr
Wenn die von Ihnen verwendete Shell bash ist, können Sie sie über in einen Befehl verkürzen pip3 install -r <(pip3 freeze) --upgrade
Effektiv, <(pip3 freeze)
ist eine anonyme Pipe, fungiert aber als Dateiobjekt
– Sergiy Kolodyazhnyy
3. September 2018 um 22:17 Uhr
sorin
$ pip install pipupgrade
$ pipupgrade --verbose --latest --yes
Pip-Upgrade hilft Ihnen, Ihr System zu aktualisieren, lokal oder Pakete von a requirements.txt
Datei! Es aktualisiert auch selektiv Pakete, die Änderungen nicht unterbrechen.
pipupgrade stellt auch sicher, dass Pakete, die in mehreren Python-Umgebungen vorhanden sind, aktualisiert werden. Es ist kompatibel mit Python 2.7+, Python 3.4+ und Pip 9+, Pip 10+, Pip 18+, Pip 19+.
Hinweis: Ich bin der Autor des Tools.
Sie sollten entfernen requirements.txt
‘s =={version}
. Zum Beispiel: python-dateutil==2.4.2
zu python-dateutil
für alle Linien.
– Youngminz
15. Mai 2016 um 5:28 Uhr
Ich habe festgestellt, dass dies die Pakete unter macOS nicht wirklich aktualisiert hat.
– jkooker
8. März 2017 um 14:42 Uhr
@youngminz Ich würde ein schnelles ‘Replace all “==” > “>=” ‘ in Ihrem Editor/ide empfehlen, bevor Sie ‘pip install …’ ausführen, um dies zu beheben
– Amaury Liet
16. März 2017 um 11:12 Uhr
für Linux: $ pip freeze | cut -d '=' -f1> requirements.txt
um die Version zu entfernen
– Cavaz
14. Januar 2018 um 18:22 Uhr
Wenn die von Ihnen verwendete Shell bash ist, können Sie sie über in einen Befehl verkürzen pip3 install -r <(pip3 freeze) --upgrade
Effektiv, <(pip3 freeze)
ist eine anonyme Pipe, fungiert aber als Dateiobjekt
– Sergiy Kolodyazhnyy
3. September 2018 um 22:17 Uhr
Wilson
Windows-Version nach Rücksprache mit dem Excellent Dokumentation für FOR
von Rob van der Woude:
for /F "delims===" %i in ('pip freeze') do pip install --upgrade %i
for /F "delims= " %i in ('pip list --outdated') do pip install -U %i
Schneller, da nur versucht wird, “veraltete” Pakete zu aktualisieren
– Refael Ackermann
19. April 2016 um 19:30 Uhr
@RefaelAckermann Ich vermute, dass dies langsamer sein wird als das Original 🙂 Um zu wissen, welche Pakete veraltet sind, muss pip zuerst überprüfen, was die neueste Version jedes Pakets ist. Es macht genau dasselbe wie der erste Schritt beim Aktualisieren und fährt nicht fort, wenn keine neuere Version verfügbar ist. In Ihrer Version überprüft pip die Versionen jedoch zweimal, das erste Mal, um die Liste der veralteten Pakete zu erstellen, und das zweite Mal, wenn Pakete auf dieser Liste aktualisiert werden.
– Piotr Dobrogost
17. Januar 2017 um 9:22 Uhr
@RefaelAckermann Das Hochfahren von Pip ist um eine Größenordnung schneller als das Überprüfen der Version eines Pakets über das Netzwerk. Dies ist also die Anzahl der Überprüfungen, die optimiert werden sollten, nicht die Anzahl der Hochfahrvorgänge. Meine macht n Checks, deine macht n+m Checks.
– Piotr Dobrogost
18. Januar 2017 um 14:38 Uhr
+1 – Es ist der 20.6.2019, ich verwende Python 3.7.3 unter Windows 10, und dies war der beste Weg für mich, alle meine lokalen Pakete zu aktualisieren.
– MacItaly
20. Juni 2019 um 17:44 Uhr
Die ersten beiden Zeilen der Ausgabe müssen übersprungen werden: for /F "skip=2 delims= " %i in ('pip list --outdated') do pip install --upgrade %i
. Wenn dies von einer Batch-Datei ausgeführt wird, stellen Sie sicher, dass Sie verwenden %%i
Anstatt von %i
. Beachten Sie auch, dass es sauberer zu aktualisieren ist pip
vor dem Ausführen dieses Befehls mit python -m pip install --upgrade pip
.
– Andy
13. Juli 2019 um 8:15 Uhr
In acht nehmen Software verrotten– Das Aktualisieren von Abhängigkeiten kann Ihre App beschädigen. Sie können die genaue Version aller installierten Pakete mit auflisten
pip freeze
(wiebundle install
odernpm shrinkwrap
). Speichern Sie am besten eine Kopie davon, bevor Sie basteln.– Oberst Panik
22. Mai 2013 um 13:01 Uhr
Wenn Sie ein einzelnes Paket und alle aktualisieren möchten es ist Abhängigkeiten (wohl ein vernünftigerer Ansatz), tun Sie dies: pip install -U –upgrade-strategy eifrig Ihr Paket
– Cyberwiz
24. Februar 2021 um 15:33 Uhr
Ich verwende PowerShell 7 und verwende derzeit diesen Einzeiler:
pip list --format freeze | %{pip install --upgrade $_.split('==')[0]}
(Ich kann hier noch keine Antwort posten)– Benutzer15290516
7. März 2021 um 5:11 Uhr