Was ist der einfachste Weg, um alle von pip installierten Pakete zu entfernen?
614
Ich versuche, eine meiner virtuellen Umgebungen 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?
@patelshahrukh Deinstallation von Python entfernt keine Pip-Pakete. Bitte VERMEIDEN Sie dies, da beide höchstwahrscheinlich nicht so funktionieren , wie Sie es sich vorstellen , und je nachdem, wie Sie Python erneut installieren, Ihr Computer in einem instabilen Zustand belassen kann, dessen Behebung mehr Arbeit erfordert .
Ich habe dieses Snippet als alternative Lösung gefunden. Es ist eine elegantere Entfernung von Bibliotheken als die Neuerstellung der virtuellen Umgebung:
pip freeze | xargs pip uninstall -y
Wenn Sie Pakete über VCS installiert haben, müssen Sie diese Zeilen ausschließen und die Pakete manuell entfernen (erhöht aus den Kommentaren unten):
Ich finde das eine gute Lösung, nur weil es die virtuelle Umgebung nicht vollständig entfernt - ich habe möglicherweise Änderungen an zB vorgenommen, postactivatedie bleiben werden.
Niceguydave
5
Nachdem ich dies ausgeführt hatte, stellte ich fest, dass das setuptoolsPaket entfernt wurde. Ich habe das Problem mit den folgenden Anweisungen behoben
Dan
1
@ gerty3000 Ja, dies wird (wie in der Frage gefragt) alle in einer virtuellen Umgebung installierten Pakete entfernen. Vielleicht sind Setuptools in Ihrer Umgebung besser an einem globalen Standort installiert?
Blueberryfields
7
Sie können auch verwenden pip freeze --exclude-editable | xargs pip uninstall -y, um VCS-Pakete zu ignorieren, ohne ein Grep-Muster zu verwenden
Dies funktioniert für alle Mac-, Windows- und Linux-Systeme. So rufen Sie die Liste aller Pip-Pakete in der Datei "resources.txt" ab (Hinweis: Dadurch wird die Datei "require.txt" überschrieben, falls vorhanden, wird die neue Datei erstellt. Wenn Sie die alte Datei "require.txt" nicht ersetzen möchten, geben Sie einen anderen Dateinamen an im folgenden Befehl an Ort und Stelle anforderungs.txt).
pip freeze > requirements.txt
Nun eins nach dem anderen 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 mit einer requirements.txtDatei arbeiten und Ihre Umgebung abweicht, ersetzen Sie einfach requirements.txtdie obigen Beispiele durch toberemoved.txt. Sobald Sie die obigen Schritte ausgeführt haben, können Sie mit die requirements.txtOption Ihre jetzt saubere Umgebung aktualisieren.
Und für einen einzelnen Befehl, ohne eine Datei zu erstellen (wie von @joeb vorgeschlagen).
Erwähnenswert ist wahrscheinlich, dass Sie die Datei "require.txt" zwangsweise überschreiben, falls sie es nicht wussten. :)
Dave Gregory
4
Wenn man außerdem alle Pakete entfernen möchte, wird "-y" angehängt. Beispiel:pip uninstall -r requirements.txt -y
David Metcalfe
58
Sie können pip uninstall -y -r <(pip freeze)alles auf einmal erledigen.
Joeb
1
@ Joeb ja das können wir auch so machen.
Harshad Kavathiya
1
@ HarshadKavathiya Sie können eine andere Datei verwenden, um Pip Freeze zu speichern, wie "current.txt", so dass Anforderungen.txt unberührt bleiben kann
Prost
118
Dies funktioniert mit der neuesten. Ich denke, es ist der kürzeste und aussagekräftigste Weg, dies zu tun.
virtualenv --clear MYENV
Aber normalerweise lösche ich einfach die virtuelle Umgebung und erstelle sie neu, da Unveränderlichkeitsregeln gelten!
Eigentlich - es scheint (von dem, worauf ich gerade gestoßen bin), wipeenvwährend in der Umgebung ein Fehler ausgelöst wird und nichts entfernt wird, wenn es im Kontext eines pip install -eEntwicklungsbuilds verwendet wird. Der Versuch, es zu verwenden, virtualenv --clear MYENVlöst keinen Fehler aus und entfernt keinen der Fehler Pakete, die Sie möglicherweise zuvor in der Umgebung installiert haben. Zumindest ist dies unter OSX der Fall. Weitere Informationen finden Sie unter bitbucket.org/dhellmann/virtualenvwrapper/issues/211/… .
mpacer
2
wipeenvist ein Alias, der von virtualenvwrapper bereitgestellt wird, daher hat ihn nicht jeder.
Jonathan Hartley
2
Nun, das ist eine Art schmutziger Trick, funktioniert aber wie Magie. Ich würde es vorziehen, dass jeder pip uninstall -r require.txt -y verwendet. Es macht eine tolle Reinigung.
Muema
84
Ich wollte diese Antwort aus einem Kommentarbereich herausheben, weil es eine der elegantesten Lösungen im Thread ist. Die volle Gutschrift für diese Antwort geht an @joeb .
pip uninstall -y -r <(pip freeze)
Dies funktionierte hervorragend für den Anwendungsfall, dass mein Benutzerpaketordner außerhalb des Kontexts einer virtuellen Umgebung gelöscht wurde, die in vielen der oben genannten Antworten nicht behandelt wird.
Bearbeiten: Weiß jemand, wie dieser Befehl in einem Makefile funktioniert?
Bonus: Ein Bash-Alias
Ich füge dies der Einfachheit halber meinem Bash-Profil hinzu:
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
Ich mag es, aber es funktioniert nicht im Null-Fall ( pip freezeführt zu keiner Ausgabe, wenn keine Pakete installiert sind, und pip uninstallbeschwert sich dann leider).
Eric G
Hmm guter Fang. Möglicherweise könnte es in eine Bash-Funktion eingebunden werden, die prüft, ob die Pip-Freeze-Ausgabe nicht leer ist. Ich sehe keinen großartigen Weg, dies zu erreichen, während der Befehl ein schöner kurzer Einzeiler bleibt.
Taylor Edmiston
1
make verwendet standardmäßig sh, aber die Substitutionssyntax <(...)ist ein Bashismus. Sie können also entweder bash -c "..." verwenden oder herumarbeiten, indem Sie einenpip freeze | pip uninstall -r /dev/stdin
Caesar
Funktioniert nicht mit Azure-Notizbüchern:ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
SeaDude
54
Andere Antworten, die else verwenden pip listoder enthalten pip freezemüssen,--local deinstallieren auch Pakete, die sich in den allgemeinen Namespaces befinden.
Also hier ist der Ausschnitt, den ich regelmäßig benutze
Dies funktionierte, bis es ein Paket traf, das diesen Fehler verursachte : ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.. Dann konnte ich keine Module mehr deinstallieren.
SeaDude
39
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
sudo ist nicht erforderlich und ohne sorgfältige Überlegung wahrscheinlich gefährlich zu verwenden, da es sich auf das globale Maschinen-Setup auswirkt. sehen Sie diese Antwort zum Beispiel: stackoverflow.com/questions/15028648/...
blueberryfields
6
Methode 2 ( pip list) funktioniert hervorragend, bis Sie Pip versehentlich selbst deinstalliert haben -_-
Justin
20
Ich habe es folgendermaßen geschafft:
Erstellen Sie die Anforderungsdatei mit dem Namen reqs.txt mit der Liste der aktuell installierten Pakete
pip freeze > reqs.txt
Deinstallieren Sie dann alle Pakete von reqs.txt
pip uninstall \
-y # remove the package with prompting for confirmation-r reqs.txt
Ich mag diese Methode, da Sie immer eine Pip-Anforderungsdatei haben, auf die Sie zurückgreifen können, wenn Sie einen Fehler machen. Es ist auch wiederholbar.
Der schnellste Weg ist, die virtuelle Umgebung komplett neu zu erstellen. Ich gehe davon aus, dass Sie eine request.txt-Datei haben, die der Produktion entspricht, wenn nicht:
# On production:
pip freeze > reqs.txt
# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
Behandelt dies sogar den Fall, dass eine bearbeitbare Installation (im Grunde eine Installation im Setuptools-Entwicklungsmodus) eine lokale .egg-info-Datei erstellt hat, die dann den Rest des Installations- / Deinstallationsprozesses störte? Da es sich um eine Reihe von Dateien handelt, scheint sie nicht zu wissen, wie sie mit ihrer Anwesenheit umgehen sollen, und anstatt etwas zu deinstallieren, wird eine lokale Verzeichnisstruktur unter MYENV komplett mit: `> Neue ausführbare Python-Dateien in MYENV / bin / python3.4> Also Erstellen einer ausführbaren Datei in MYENV / bin / python> Installieren von Setuptools, Pip, Wheel ... erledigt.` Aber MYENV hat die Umgebung nicht zurückgesetzt!
mpacer
16
Unter Windows können Sie pathbei korrekter Konfiguration Folgendes verwenden:
Nur eine Warnung, dass dies nicht vollständig ist, da Sie möglicherweise auf Probleme wie "Datei nicht gefunden" stoßen, aber in einigen Fällen trotzdem funktionieren können
BEARBEITEN: Aus Gründen der Übersichtlichkeit: uninsist eine beliebige Datei, in die Daten geschrieben werden, wenn dieser Befehl ausgeführt wird:pip freeze > unins
Diese Datei, die sie wiederum geschrieben hat, wird dann verwendet, um die oben genannten Pakete mit impliziter Zustimmung / vorheriger Genehmigung über zu deinstallieren pip uninstall -y -r unins
(Hinzufügen als Antwort, da ich nicht genug Ruf 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 diese Option "Alle deinstallieren" Teil eines Skripts oder Makefiles ist). Dies kann gelöst werden, xargs -rwenn die GNU-Version von xargs:
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.
Dies war für mich der einfachste Weg, 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))
Plattformübergreifende Unterstützung nur durch Verwendung von pip:
#!/usr/bin/env pythonfrom sys import stderr
from pip.commands.uninstall importUninstallCommandfrom pip import get_installed_distributions
pip_uninstall =UninstallCommand()
options, args = pip_uninstall.parse_args([
package.project_name
for package in
get_installed_distributions()ifnot package.location.endswith('dist-packages')])
options.yes =True# Don't confirm before uninstall# set `options.require_venv` to True for virtualenv restrictiontry:print pip_uninstall.run(options, args)exceptOSErroras 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.
Wenn Sie nicht wissen, wo sich Ihre virtuelle Umgebung befindet, können Sie sie which pythonin einer aktivierten virtuellen Umgebung ausführen , um den Pfad abzurufen
In meinem Fall hatte ich versehentlich eine Reihe von Paketen weltweit mit einem pipunter macOS installierten Homebrew installiert . Der einfachste Weg, zu den Standardpaketen zurückzukehren, war ein einfacher:
Diese Antwort setzt zu viel über die Umgebung voraus und löst das Problem nicht direkt, wenn Sie beispielsweise pyenv verwenden.
Mark
@Mark Nun sicher, wenn Sie pyenv verwenden, müssten Sie etwas anderes tun. In dem allgemeinen Fall, dass Sie es nicht sind, glaube ich, dass dies die einfachste und am wenigsten hackige Lösung ist. Beachten Sie, dass diese Bedingung am Anfang der Antwort ausdrücklich angegeben wird.
Radon Rosborough
Das OP fragte nach virtuellen Envs. Er erwähnte nicht ausdrücklich die Verwendung eines Mac oder Brew zur Installation von Python. Daher können Sie nicht davon ausgehen, dass das Betriebssystem oder das Gebräu verwendet wurde - und diese Antwort löst nicht ALLE Bedingungen. Wenn Sie sich darauf konzentrieren, mit einem Tool wie pip nach Lösungen für die Umgebung zu suchen, werden Sie den Kontext der Umgebung ansprechen, in der Sie sich befinden. Hoffe das macht Sinn.
Mark
1
@ Mark Ich verstehe deine Position. Wir können zustimmen, nicht zuzustimmen. Ich möchte nur den Leuten von Google helfen, die auf einen Link mit der Bezeichnung "Was ist der einfachste Weg, um alle von pip installierten Pakete zu entfernen?" Klicken. wenn sie wirklich alle Pakete entfernen möchten, die global von pip installiert wurden.
Radon Rosborough
In Übereinstimmung mit @RadonRosborough ist der Link-Titel repräsentativ dafür, warum ich hier gelandet bin, auch wenn das OP nicht die gleiche Frage stellt.
Kenn Sebesta
1
In der Befehlsshell von Windows pip freeze | xargs pip uninstall -yfunktioniert der Befehl nicht. Für diejenigen unter Ihnen, die Windows verwenden, habe ich einen alternativen Weg gefunden, dies zu tun.
Kopieren Sie alle Namen der installierten Pip- Pakete aus dem pip freezeBefehl in eine TXT- Datei.
Gehen Sie dann zum Speicherort Ihrer TXT- Datei und führen Sie den Befehl auspip uninstall -r *textfile.txt*
Ich glaube, diese Antwort fügt nicht viele neue Informationen hinzu. Ich hätte lieber eine Verbesserung einer anderen bereits vorhandenen ähnlichen Antwort vorgeschlagen, wie dieser: stackoverflow.com/a/45475070/11138259
sinoroc
-1
Pip kann nicht wissen, welche Pakete von ihm installiert wurden und welche Pakete vom Paketmanager Ihres Systems installiert wurden. Dafür müssten Sie so etwas tun
für RPM-basierte Distributionen (ersetzen Sie python2.7 durch Ihre Python-Version, mit der Sie pip installiert haben):
find /usr/lib/python2.7/|while read f;doif! rpm -qf "$f"&>/dev/null; then
echo "$f"
fi
done |xargs rm -fr
für eine deb-basierte Distribution:
find /usr/lib/python2.7/|while read f;doif! dpkg-query -S "$f"&>/dev/null; then
echo "$f"
fi
done |xargs rm -fr
um dann die verbleibenden leeren Verzeichnisse zu bereinigen:
find /usr/lib/python2.7-type d -empty |xargs rm -fr
Ich fand die Top-Antwort sehr irreführend, da sie alle (die meisten?) Python-Pakete aus Ihrer Distribution entfernt und Sie wahrscheinlich mit einem kaputten System zurücklässt.
Bei allem Respekt scheint dies vergleichbar. Warum nicht dpkg-query -S '/usr/lib/python2.7/*'die Namen und dpkg-query -Ljeden Namen extrahieren , um die zugehörigen Dateien zu sichern? Es hat bereits die Manifeste vorbereitet. Mein Hauptargument ist, dass Sie nicht auf Pakete abzielen, die irgendwo anders als per Pip installiert sind, sondern auf Pakete, die von etwas anderem als dem von Ihnen erwarteten Manager installiert wurden, und an einem Ort, den Pip im Allgemeinen nicht berühren sollte. pip list -llistet die lokal installierten Pakete auf, und einige werden es sogar tun pip install --target=.... Wenn Sie alle derzeit leeren Verzeichnisse entfernen, werden Sie auch gebissen!
Antworten:
Ich habe dieses Snippet als alternative Lösung gefunden. Es ist eine elegantere Entfernung von Bibliotheken als die Neuerstellung der virtuellen Umgebung:
Wenn Sie Pakete über VCS installiert haben, müssen Sie diese Zeilen ausschließen und die Pakete manuell entfernen (erhöht aus den Kommentaren unten):
quelle
postactivate
die bleiben werden.setuptools
Paket entfernt wurde. Ich habe das Problem mit den folgenden Anweisungen behobenpip freeze --exclude-editable | xargs pip uninstall -y
, um VCS-Pakete zu ignorieren, ohne ein Grep-Muster zu verwendenDies funktioniert für alle Mac-, Windows- und Linux-Systeme. So rufen Sie die Liste aller Pip-Pakete in der Datei "resources.txt" ab (Hinweis: Dadurch wird die Datei "require.txt" überschrieben, falls vorhanden, wird die neue Datei erstellt. Wenn Sie die alte Datei "require.txt" nicht ersetzen möchten, geben Sie einen anderen Dateinamen an im folgenden Befehl an Ort und Stelle anforderungs.txt).
Nun eins nach dem anderen entfernen
Wenn wir dann alles auf einmal entfernen wollen
Wenn Sie an einem vorhandenen Projekt mit einer
requirements.txt
Datei arbeiten und Ihre Umgebung abweicht, ersetzen Sie einfachrequirements.txt
die obigen Beispiele durchtoberemoved.txt
. Sobald Sie die obigen Schritte ausgeführt haben, können Sie mit dierequirements.txt
Option Ihre jetzt saubere Umgebung aktualisieren.Und für einen einzelnen Befehl, ohne eine Datei zu erstellen (wie von @joeb vorgeschlagen).
quelle
pip uninstall -r requirements.txt -y
pip uninstall -y -r <(pip freeze)
alles auf einmal erledigen.Dies funktioniert mit der neuesten. Ich denke, es ist der kürzeste und aussagekräftigste Weg, dies zu tun.
Aber normalerweise lösche ich einfach die virtuelle Umgebung und erstelle sie neu, da Unveränderlichkeitsregeln gelten!
quelle
wipeenv
? virtualenvwrapper.readthedocs.org/en/latest/…wipeenv
während in der Umgebung ein Fehler ausgelöst wird und nichts entfernt wird, wenn es im Kontext einespip install -e
Entwicklungsbuilds verwendet wird. Der Versuch, es zu verwenden,virtualenv --clear MYENV
löst keinen Fehler aus und entfernt keinen der Fehler Pakete, die Sie möglicherweise zuvor in der Umgebung installiert haben. Zumindest ist dies unter OSX der Fall. Weitere Informationen finden Sie unter bitbucket.org/dhellmann/virtualenvwrapper/issues/211/… .wipeenv
ist ein Alias, der von virtualenvwrapper bereitgestellt wird, daher hat ihn nicht jeder.Ich wollte diese Antwort aus einem Kommentarbereich herausheben, weil es eine der elegantesten Lösungen im Thread ist. Die volle Gutschrift für diese Antwort geht an @joeb .
Dies funktionierte hervorragend für den Anwendungsfall, dass mein Benutzerpaketordner außerhalb des Kontexts einer virtuellen Umgebung gelöscht wurde, die in vielen der oben genannten Antworten nicht behandelt wird.
Bearbeiten: Weiß jemand, wie dieser Befehl in einem Makefile funktioniert?
Bonus: Ein Bash-Alias
Ich füge dies der Einfachheit halber meinem Bash-Profil hinzu:
Dann renne:
Alternative für pipenv
Wenn Sie Pipenv verwenden , können Sie einfach Folgendes ausführen:
quelle
pip freeze
führt zu keiner Ausgabe, wenn keine Pakete installiert sind, undpip uninstall
beschwert sich dann leider).<(...)
ist ein Bashismus. Sie können also entweder bash -c "..." verwenden oder herumarbeiten, indem Sie einenpip freeze | pip uninstall -r /dev/stdin
ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
Andere Antworten, die else verwenden
pip list
oder enthaltenpip freeze
müssen,--local
deinstallieren auch Pakete, die sich in den allgemeinen Namespaces befinden.Also hier ist der Ausschnitt, den ich regelmäßig benutze
Ref:
pip freeze --help
quelle
ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
. Dann konnte ich keine Module mehr deinstallieren.Methode 1 (mit
pip freeze
)Methode 2 (mit
pip list
)Methode 3 (mit
virtualenv
)quelle
pip list
) funktioniert hervorragend, bis Sie Pip versehentlich selbst deinstalliert haben -_-Ich habe es folgendermaßen geschafft:
Erstellen Sie die Anforderungsdatei mit dem Namen reqs.txt mit der Liste der aktuell installierten Pakete
Deinstallieren Sie dann alle Pakete von reqs.txt
Ich mag diese Methode, da Sie immer eine Pip-Anforderungsdatei haben, auf die Sie zurückgreifen können, wenn Sie einen Fehler machen. Es ist auch wiederholbar.
quelle
Der schnellste Weg ist, die virtuelle Umgebung komplett neu zu erstellen. Ich gehe davon aus, dass Sie eine request.txt-Datei haben, die der Produktion entspricht, wenn nicht:
quelle
Unter Windows können Sie
path
bei korrekter Konfiguration Folgendes verwenden:Ähnlich sollte es bei Unix-ähnlichen Systemen sein:
Nur eine Warnung, dass dies nicht vollständig ist, da Sie möglicherweise auf Probleme wie "Datei nicht gefunden" stoßen, aber in einigen Fällen trotzdem funktionieren können
BEARBEITEN: Aus Gründen der Übersichtlichkeit:
unins
ist eine beliebige Datei, in die Daten geschrieben werden, wenn dieser Befehl ausgeführt wird:pip freeze > unins
Diese Datei, die sie wiederum geschrieben hat, wird dann verwendet, um die oben genannten Pakete mit impliziter Zustimmung / vorheriger Genehmigung über zu deinstallieren
pip uninstall -y -r unins
Die Datei wird nach Abschluss endgültig gelöscht.
quelle
Verwenden der virtualenvwrapper- Funktion:
Siehe wipeenv-Dokumentation
quelle
wipeenv
Fügen Sie zunächst alle Pakete hinzu
requirements.txt
Dann entfernen Sie alle
quelle
Es ist eine alte Frage, die ich kenne, aber ich bin darüber gestolpert, damit Sie sie zum späteren Nachschlagen jetzt tun können:
aus der Pip-Dokumentation Version 8.1
quelle
Für Windows-Benutzer ist dies das, was ich unter Windows PowerShell verwende
quelle
(Hinzufügen als Antwort, da ich nicht genug Ruf 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 diese Option "Alle deinstallieren" Teil eines Skripts oder Makefiles ist). Dies kann gelöst werden,
xargs -r
wenn die GNU-Version vonxargs
:von
man xargs
:quelle
Der Fall könnte sein, dass man diesen Befehl mehrmals ausführen muss, um einen leeren zu erhalten
pip3 freeze --local
.quelle
Dies war für mich der einfachste Weg, alle Python-Pakete zu deinstallieren.
quelle
Plattformübergreifende Unterstützung nur durch Verwendung von
pip
:quelle
Dies ist der Befehl, der für mich funktioniert:
quelle
Die einfache und robuste Art, plattformübergreifend und auch in Pipenv zu arbeiten, ist:
von pipenv:
Piplock oder Pipfile werden jedoch nicht aktualisiert
quelle
Wenn Sie laufen
virtualenv
:Wenn Ihre virtuelle Umgebung beispielsweise ist
/Users/you/.virtualenvs/projectx
, würden Sie Folgendes ausführen:Wenn Sie nicht wissen, wo sich Ihre virtuelle Umgebung befindet, können Sie sie
which python
in einer aktivierten virtuellen Umgebung ausführen , um den Pfad abzurufenquelle
In meinem Fall hatte ich versehentlich eine Reihe von Paketen weltweit mit einem
pip
unter macOS installierten Homebrew installiert . Der einfachste Weg, zu den Standardpaketen zurückzukehren, war ein einfacher:Oder wenn Sie verwendet haben
pip3
:quelle
pip freeze
Befehl in eine TXT- Datei.pip uninstall -r *textfile.txt*
quelle
Wenn Sie verwenden
pew
, können Sie den Befehl wipeenv verwenden :pew wipeenv [env]
quelle
Ich verwende die Option --user, um alle auf der Benutzerseite installierten Pakete zu deinstallieren.
quelle
Pip kann nicht wissen, welche Pakete von ihm installiert wurden und welche Pakete vom Paketmanager Ihres Systems installiert wurden. Dafür müssten Sie so etwas tun
für RPM-basierte Distributionen (ersetzen Sie python2.7 durch Ihre Python-Version, mit der Sie pip installiert haben):
für eine deb-basierte Distribution:
um dann die verbleibenden leeren Verzeichnisse zu bereinigen:
Ich fand die Top-Antwort sehr irreführend, da sie alle (die meisten?) Python-Pakete aus Ihrer Distribution entfernt und Sie wahrscheinlich mit einem kaputten System zurücklässt.
quelle
dpkg-query -S '/usr/lib/python2.7/*'
die Namen unddpkg-query -L
jeden Namen extrahieren , um die zugehörigen Dateien zu sichern? Es hat bereits die Manifeste vorbereitet. Mein Hauptargument ist, dass Sie nicht auf Pakete abzielen, die irgendwo anders als per Pip installiert sind, sondern auf Pakete, die von etwas anderem als dem von Ihnen erwarteten Manager installiert wurden, und an einem Ort, den Pip im Allgemeinen nicht berühren sollte.pip list -l
listet die lokal installierten Pakete auf, und einige werden es sogar tunpip install --target=...
. Wenn Sie alle derzeit leeren Verzeichnisse entfernen, werden Sie auch gebissen!