it-swarm.com.de

Was ist der einfachste Weg, um alle von pip installierten Pakete zu entfernen?

Ich versuche, eine meiner Virtualenvs zu reparieren - ich möchte alle installierten Bibliotheken auf diejenigen zurücksetzen, die der Produktion entsprechen.

Gibt es eine schnelle und einfache Möglichkeit, dies mit pip zu tun?

412
blueberryfields

Ich habe dieses Snippet als alternative Lösung gefunden. Dies ist eine elegantere Entfernung von Bibliotheken als das erneute Erstellen der virtualenv:

pip freeze | xargs pip uninstall -y

Falls Sie Pakete über VCS installiert haben, müssen Sie diese Zeilen ausschließen und die Pakete manuell entfernen (erhöht aus den folgenden Kommentaren):

pip freeze | grep -v "^-e" | xargs pip uninstall -y
652
blueberryfields

Dies funktioniert für alle Mac-, Windows- und Linux-Systeme. Um die Liste aller Pip-Pakete in der Datei Requirements.txt abzurufen (Hinweis: Dies wird die Anforderungen.txt überschreiben, falls vorhanden, sonst wird das neue erstellt.)

pip freeze > requirements.txt

Jetzt einzeln entfernen

pip uninstall -r requirements.txt

Wenn wir dann alles auf einmal entfernen wollen 

pip uninstall -r requirements.txt -y

Wenn Sie an einem vorhandenen Projekt arbeiten, das über eine requirements.txt-Datei verfügt und Ihre Umgebung abweicht, ersetzen Sie einfach requirements.txt aus den obigen Beispielen durch toberemoved.txt. Nachdem Sie die oben genannten Schritte ausgeführt haben, können Sie den requirements.txt verwenden, um Ihre jetzt saubere Umgebung zu aktualisieren.

Und für einen einzelnen Befehl, ohne eine Datei zu erstellen (wie Joeb vorgeschlagen).

pip uninstall -y -r <(pip freeze)
177

Ich denke, das funktioniert mit dem neuesten 

virtualenv --clear MYENV
89
Robert Moskal

Ich wollte diese Antwort aus einem Kommentarbereich herausheben, da dies eine der elegantesten Lösungen im Thread ist. Der volle Bonus für diese Antwort geht an @joeb .

pip uninstall -y -r <(pip freeze)

Dies hat sich für den Anwendungsfall des Löschens meines Ordner für Benutzerpakete außerhalb des Kontextes einer virtuellen Umgebung, mit der viele der oben genannten Antworten nicht umgehen können, hervorragend bewährt.

Edit: Jeder weiß, wie dieser Befehl in einem Makefile funktioniert?

Bonus: Ein Bash-Alias

Ich füge dies zur Vereinfachung meinem bash-Profil hinzu:

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"

Dann renne:

pipuninstallall

Alternative für Pipenv

Wenn Sie pipenv verwenden, können Sie einfach Folgendes ausführen:

pipenv uninstall --all
55
Taylor Edmiston

Methode 1 (mit pip freeze)

pip freeze | xargs pip uninstall -y

Methode 2 (mit pip list)

pip list | awk '{print $1}' | xargs pip uninstall -y

Methode 3 (mit virtualenv)

virtualenv --clear MYENV
38
Suriyaa

Andere Antworten, die pip list oder pip freezeverwenden, müssen --local enthalten. Andernfalls werden auch Pakete deinstalliert, die in den allgemeinen Namespaces gefunden werden. 

Hier sind also die Schnipsel, die ich regelmäßig verwende

 pip freeze --local | xargs pip uninstall -y

oder

 pip list --local | py -x "print(x.split()[0])" | xargs pip uninstall -y

Erfahren Sie mehr über dieses Verhalten, indem Sie pip freeze --help ausgeben.

26
nehemiah

Der schnellste Weg ist, die Virtualenv komplett neu zu erstellen. Ich gehe davon aus, dass Sie über eine Requirements.txt-Datei verfügen, die der Produktion entspricht, falls nicht:

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
16
Ned Batchelder

Wenn Ihre path unter Windows korrekt konfiguriert ist, können Sie Folgendes verwenden:

pip freeze > unins && pip uninstall -y -r unins && del unins

Für Unix-ähnliche Systeme sollte es ein ähnlicher Fall sein:

pip freeze > unins && pip uninstall -y -r unins && rm unins

Nur eine Warnung, dass dies nicht vollständig ist, da Sie möglicherweise auf Probleme wie "Datei nicht gefunden" stoßen, dies kann jedoch in einigen Fällen trotzdem funktionieren 

BEARBEITEN: Der Klarheit halber gilt: unins ist eine beliebige Datei, in die Daten geschrieben werden, wenn dieser Befehl ausgeführt wird: pip freeze > unins

Diese Datei, die ihrerseits geschrieben wurde, wird dann zum Deinstallieren der zuvor genannten Pakete mit impliziter Zustimmung/vorheriger Genehmigung über pip uninstall -y -r unins verwendet.

Die Datei wird nach Fertigstellung endgültig gelöscht.

Verwendung der virtualenvwrapper function:

wipeenv

Siehe wipeenv Dokumentation

12
zesk

Für Windows-Benutzer verwende ich dies unter Windows PowerShell

 pip uninstall -y (pip freeze)
6
benwrk

Es ist eine alte Frage, die ich kenne, aber ich bin darüber gestolpert, so dass Sie dies jetzt tun können:

pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...

-r, --Anforderungsdatei 

Deinstallieren Sie alle Pakete, die in der angegebenen Anforderungsdatei aufgeführt sind. Diese Option kann mehrfach verwendet werden.

aus der pip Dokumentation Version 8.1

4
Craicerjack

(Füge dies als Antwort hinzu, da ich nicht genug Reputation habe, um die Antwort von @blueberryfields zu kommentieren.)

Die Antwort von @blueberryfields funktioniert gut, schlägt jedoch fehl, wenn kein zu deinstallierendes Paket vorhanden ist (was ein Problem sein kann, wenn "uninstall all" Teil eines Skripts oder Makefiles ist). Dies kann mit xargs -r behoben werden, wenn die GNU-Version von xargs verwendet wird:

pip freeze --exclude-editable | xargs -r pip uninstall -y

von man xargs:

-r, --no-run-if-empty

Wenn die Standardeingabe keine Leerzeichen enthält, führen Sie den Befehl nicht aus. Normalerweise wird der Befehl einmal ausgeführt, auch wenn keine Eingabe erfolgt. Diese Option ist eine GNU Erweiterung.

2

Dies war der einfachste Weg für mich, alle Python-Pakete zu deinstallieren.

from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
    system("pip3 uninstall {} -y -q".format(i.key))
2
Anonymous 138

Plattformübergreifende Unterstützung nur mit pip:

#!/usr/bin/env python

from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions

pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
    package.project_name
    for package in
    get_installed_distributions()
    if not package.location.endswith('dist-packages')
])

options.yes = True  # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction

try:
    print pip_uninstall.run(options, args)
except OSError as e:
    if e.errno != 13:
        raise e
    print >> stderr, "You lack permissions to uninstall this package.
                      Perhaps run with sudo? Exiting."
    exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.
2
Samuel Marks

Dies ist der Befehl, der für mich funktioniert:

pip list | awk '{print $1}' | xargs pip uninstall -y
2
Fei Xie

Wenn Sie pew verwenden, können Sie den Befehl wipeenv verwenden:

pew wipeenv [env]

1

In Command Shell von Windows funktioniert der Befehl pip freeze | xargs pip uninstall -y nicht. Für diejenigen von Ihnen, die Windows verwenden, habe ich einen alternativen Weg gefunden, dies zu tun.

  1. Kopieren Sie alle Namen der installierten Pakete von pip aus dem pip freeze - Befehl in eine .txt - Datei.
  2. Gehen Sie dann zum Speicherort Ihrer .txt -Datei und führen Sie den Befehl pip uninstall -r *textfile.txt* aus.
1

Wenn Sie virtualenv ausführen:

virtualenv --clear </path/to/your/virtualenv>

beispiel: Wenn Ihre Virtualenv /Users/you/.virtualenvs/projectx lautet, führen Sie Folgendes aus: 

virtualenv --clear /Users/you/.virtualenvs/projectx

wenn Sie nicht wissen, wo sich Ihre virtuelle Umgebung befindet, können Sie which python innerhalb einer aktivierten virtuellen Umgebung ausführen, um den Pfad abzurufen

1
punkrockpolly

In meinem Fall hatte ich versehentlich eine Reihe von Paketen global installiert, wobei eine von Homebrew installierte pip auf macOS verwendet wurde. Die einfachste Möglichkeit, zu den Standardpaketen zurückzukehren, war eine einfache:

$ brew reinstall python

Oder wenn Sie pip3 verwenden:

$ brew reinstall python3
1

Fügen Sie zunächst das gesamte Paket zu requirements.txt hinzu.

pip freeze > requirements.txt

Dann alle entfernen

pip uninstall -y -r requirements.txt 
0
Shafikur Rahman