Wie entferne ich mit Pythons easy_install installierte Pakete?


704

Python easy_installmacht die Installation neuer Pakete äußerst bequem. Soweit ich das beurteilen kann, werden jedoch nicht die anderen allgemeinen Funktionen eines Abhängigkeitsmanagers implementiert - das Auflisten und Entfernen installierter Pakete.

Was ist der beste Weg, um herauszufinden, was installiert ist, und was ist der bevorzugte Weg, um installierte Pakete zu entfernen? Gibt es Dateien, die aktualisiert werden müssen, wenn ich Pakete manuell entferne (z. B. von rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggoder ähnlich)?


67
Dieser Beitrag ist fast 2 Jahre alt, als ich diesen Kommentar schreibe. pip ist jetzt effektiv ein Ersatz für easy_install und kann von letzteren installierte Pakete (einschließlich Eier) ordnungsgemäß und sauber entfernen. Bitte stellen Sie sicher, dass Sie die Antwort, die sie weiter unten im Thread vorschlägt, positiv bewerten.
Michael Ekoka

53
Das Oxymoron, dass etwas namens "easy_install" - a: kein Gegenstück hat easy_uninstall, noch b: erwähnt, wie man das tun kann --help- verwirrt meinen Verstand / macht meine Seele wütend / macht mein Herz traurig .
Alex Gray

13
@mike was ist, wenn ich versuche, pip zu deinstallieren? (:
mccc

Antworten:


621

pip , eine Alternative zu setuptools / easy_install, bietet den Befehl "deinstallieren".

Installieren Sie das Rohr gemäß den Installationsanweisungen :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Anschließend können Sie pip uninstallmit installierte Pakete entferneneasy_install


25
Wenn Sie Probleme beim Deinstallieren von Modulen mit pip haben, stellen Sie sicher, dass Ihre Pip-Installation selbst auf dem neuesten Stand ist: pip install -U pip # das ist ein Großbuchstabe U
Michael Ekoka

4
pip hat bei mir funktioniert, um ein installiertes easy_install-Paket zu deinstallieren. Ich musste 'pip uninstall <package>' mehrmals ausführen, um alle Versionen des Pakets zu entfernen. Denken Sie also daran. Es wurde sogar ein 'Entwickeln' installiertes Paket entfernt, was infolgedessen eine Art Chaos war.
DragonFax

2
Aber wie würden Sie nicht aktives Paket löschen
CrazyGeek

7
Ich habe easy_install verwendet, um pip zu installieren und easy_install-Installationen zu deinstallieren.

2
Die Antwort lautet "install pip", aber tatsächlich scheint pip mit modernem Python eingebaut zu sein .
Edward

188

Um ein zu deinstallieren .egg, müssen Sie rm -rfdas Ei (es könnte ein Verzeichnis sein) und die passende Zeile aus entfernensite-packages/easy-install.pth


18
Der neuere pipPaketmanager enthält eine Deinstallationsfunktion.
Joeforker

Ich finde pip besser als deinstallieren, weil pip von Quellen installiert wird. Wenn Sie wie ich ein brandneues Win7 64bit haben, wird es Ihre Tage retten :)
daitangio

6
Einige Benutzer verwenden eine alte Version von pip, die nicht über die Deinstallationsoption verfügt, sodass sich diese Antwort immer noch lohnt.
Mark Pitchless

5
Erwähnenswert ist wahrscheinlich, dass diese Methode möglicherweise Streu- data_filesund scripts(und möglicherweise andere Dateikategorien) auf dem System hinterlässt . Das Ei EGG-INFO/SOURCES.txtenthält eine Liste aller packageDateien und sources, aber nicht data_files, die in einem beliebigen Verzeichnis auf Ihrem System installiert werden können ...
Alex Leach

pip entfernt nicht immer alles, was easy_install installiert. Hier ist eine kleine Erfahrung , die mir gerade passiert ist, als pip eines meiner Module nicht deinstallieren konnte. Ich musste die passende Zeile aus site-packages / easy-install.pth entfernen, um sie vollständig zu deinstallieren.
Ychaouche

158

Zuerst müssen Sie diesen Befehl ausführen:

$ easy_install -m [PACKAGE]

Es entfernt alle Abhängigkeiten des Pakets.

Entfernen Sie dann die Eidatei dieses Pakets:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg

1
Weitere Dokumente hier: peak.telecommunity.com/DevCenter/…
GiDo

-mist nicht der richtige Befehl easy_install, um etwas zu entfernen, soweit ich das beurteilen kann, aber diese Antwort gibt den entscheidenden Speicherort der easy_install-Pakete an, den andere Antworten nicht haben. Ein rm -rf /usr/local/lib/python*vor der Installation von Pip ist der
richtige

55

Alle Informationen sind in den anderen Antworten enthalten, aber keine fasst Ihre beiden Anfragen zusammen oder scheint die Dinge unnötig komplex zu machen:

  • Verwenden Sie für Ihre Entfernung Folgendes:

    pip uninstall <package>

    (installieren mit easy_install pip)

  • Verwenden Sie für Ihre Liste der installierten Pakete Folgendes:

    pip freeze

    Oder:

    yolk -l

    Hier können weitere Paketdetails ausgegeben werden.

    (Installation über easy_install yolkoder pip install yolk)


Nach dem Ausführen yolk -lsehe ich, dass ich doppelte Pakete wie "scipy -0.11.0 -non-active development" und "scipy -0.14.0 ... -active development" habe. Wie kann ich diese nicht aktiven Entwicklungspakete deinstallieren?
Bobbyjoe93

2
Dies ist gut, außer ich möchte pip deinstallieren, das von easy_install installiert wurde. Dies liegt daran, dass es letztendlich für die falsche Python-Version installiert wurde.
Nagev

28

Es gibt verschiedene Quellen im Internet, die einen Hack vorschlagen, indem Sie das Paket mit der Option -m neu installieren und dann einfach die .egg-Datei in lib / und die Binärdateien in bin / entfernen. Eine Diskussion zu diesem Setuptools-Problem finden Sie im Python-Bug-Tracker als Setuptools- Problem 21 .

Bearbeiten: Der Link zum Python-Bugtracker wurde hinzugefügt.


2
Danke für diese Info. Als Referenz für andere ist hier der Link zu dem von Ihnen erwähnten Problem
ire_and_curses

25

Wenn das Problem für Sie ernst genug ist, können Sie virtualenv in Betracht ziehen . Sie können eine Umgebung erstellen, die Python-Bibliotheken kapselt. Sie installieren Pakete dort und nicht im globalen Verzeichnis der Site-Pakete. Alle Skripte, die Sie in dieser Umgebung ausführen, haben Zugriff auf diese Pakete (und optional auch auf Ihre globalen). Ich verwende dies häufig bei der Bewertung von Paketen, bei denen ich nicht sicher bin, ob ich sie global installieren möchte / muss. Wenn Sie entscheiden, dass Sie das Paket nicht benötigen, ist es einfach genug, diese virtuelle Umgebung einfach wegzublasen. Es ist ziemlich einfach zu bedienen. Erstelle eine neue Umgebung:

$>virtualenv /path/to/your/new/ENV

virtual_envt installiert setuptools für Sie in der neuen Umgebung, sodass Sie Folgendes tun können:

$>ENV/bin/easy_install

Sie können sogar eigene Boostrap-Skripte erstellen, mit denen Sie Ihre neue Umgebung einrichten können. Mit einem Befehl können Sie also eine neue virtuelle Umgebung erstellen, beispielsweise mit Python 2.6, Psycopg2 und Django, die standardmäßig installiert sind (Sie können eine env-spezifische Version von Python installieren, wenn Sie möchten).


Was ist $>? Ist das eine Aufforderung? Vielleicht wäre eine Korrektur auf $ hilfreicher? Vielen Dank
Gray

18

Offizielle (?) Anweisungen: http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Wenn Sie ein Paket durch eine andere Version ersetzt haben, können Sie die nicht benötigten Pakete einfach löschen, indem Sie die Datei oder das Verzeichnis PackageName-versioninfo.egg (im Installationsverzeichnis) löschen.

Wenn Sie die aktuell installierte Version eines Pakets (oder alle Versionen eines Pakets) löschen möchten, sollten Sie zuerst Folgendes ausführen:

easy_install -mxN PackageName

Dadurch wird sichergestellt, dass Python nicht weiter nach einem Paket sucht, das Sie entfernen möchten. Nachdem Sie dies getan haben, können Sie die .egg-Dateien oder -Verzeichnisse sowie alle Skripte, die Sie entfernen möchten, sicher löschen.


Manche Dinge ändern sich anscheinend nie! PIP weigerte sich, ein TRAC-Hack-Plugin (trac admin) zu installieren, nur easy_install funktioniert. Aber ich habe versehentlich eine alte Version installiert. Und easy_install konnte dies nicht über die https-URL für das Projekt beheben. Also habe ich PIP verwendet, um es zu entfernen, aber nach der Neuinstallation von TRAC wird das Plugin nicht angezeigt. Also benutze ich die Informationen hier, um das Paket zu isolieren und es manuell zu löschen und dann neu zu installieren. Wütend. (Python 2.7)
Richard Cooke


7

Sie können installierte Python-Pakete auflisten yolk -l. Sie müssen jedoch easy_install yolkzuerst verwenden.


6

Kam auf diese Frage, als ich versuchte, die vielen zufälligen Python-Pakete zu deinstallieren, die im Laufe der Zeit installiert wurden.

Unter Verwendung der Informationen aus diesem Thread habe ich Folgendes gefunden:

cat package_list | xargs -n1 sudo pip uninstall -y

Das package_listwird von einem pip freezein einer virtuellen Umgebung aufgeräumt (awk) .

So entfernen Sie fast alle Python-Pakete:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y

<package_list xargs -n1 sudo pip uninstall -yvermeidet ein UUOC!
Heini Høgnason

3

Ich bin auf meinem MacOS X Leopard 10.6.blah auf dasselbe Problem gestoßen.

Die Lösung besteht darin, sicherzustellen, dass Sie MacPorts Python aufrufen:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

Hoffe das hilft.


1
Ich habe jedoch komplett von MacPorts auf Brew, native Python 2.7 von Mac umgestellt. MySQLdb installiert über setup_tools
Cmag

3

Für mich nur das Löschen dieser Datei: easy-install.pth hat funktioniert, rest pip install django == 1.3.7


1

Das hat bei mir funktioniert. Es ähnelt den vorherigen Antworten, aber der Pfad zu den Paketen ist unterschiedlich.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plaform: MacOS High Sierra Version 10.13.3


1
Der erste Befehl erzeugt diesen Fehler für mich:error: No urls, filenames, or requirements specified (see --help)
Michael
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.