So aktualisieren Sie alle Python-Pakete mit Pip

Lesezeit: 7 Minuten

Benutzer-Avatar
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.

  • 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 (wie bundle install oder npm 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

Sie können den folgenden Python-Code verwenden. nicht wie pip freezewerden 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

  • Ich wickelte dies in ein fabfile.py. Vielen Dank!

    – Josch K

    29. April 2013 um 21:54 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


Benutzer-Avatar
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

Benutzer-Avatar
sorin

Verwenden Pip-Upgrade! … letzte Veröffentlichung 2019

$ 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+.

Geben Sie hier die Bildbeschreibung ein

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

Benutzer-Avatar
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


1162010cookie-checkSo aktualisieren Sie alle Python-Pakete mit Pip

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy