So deinstallieren Sie bearbeitbare Pakete mit pip (installiert mit -e)

106

Ich habe einige Pakete mit -e installiert

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

Ich mit Pip Freeze sehe ich

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

Wenn ich versuche, die Pakete zu deinstallieren, erhalte ich folgende Fehler:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Wie deinstalliere ich ein solches Paket?

Michael_Scharf
quelle
pip uninstall <Paket> deinstalliert Pakete, die in bearbeitbaren Modi in neueren Versionen von pip installiert wurden (meins ist 19.1.1). Stellen Sie sicher, dass Sie den Paketnamen in setup.py verwenden, nicht den Alias, den Sie angeben, um dieses Paket in entry_points aufzurufen
picmate 22
Für Benutzer, die conda verwenden, ist die Deinstallation im dev-Modus in conda wie folgt:conda develop -u .
Charlie Parker
Hast du herausgefunden, warum pip uninstall yourpackagees nicht funktioniert hat? Wie bedeuten Ihre Fehler? Scheint eine seltsame Ausgabe des Befehls zu sein ...
Charlie Parker
Hast du es versucht pip uninstall -e .oder python setup.py develop -u?
Charlie Parker
2
Für mich hat es gut pip uninstall libraryfunktioniert. Wenn Sie zur Antwort des OP gehen, scheint es etwas Seltsames an seiner Bibliothek zu sein, das beschädigt wurde. Hoffentlich spart dies den Leuten Zeit, wenn sie das nächste Mal hierher kommen. Es gibt jedoch viele verschiedene Optionen, die funktionieren könnten.
Charlie Parker

Antworten:

90

Um {virtualenv}/lib/python2.7/site-packages/(wenn nicht virtualenv dann {system_dir}/lib/python2.7/dist-packages/)

  • Entfernen Sie die Eifeile (z. B. distribute-0.6.34-py2.7.egg), falls vorhanden
  • easy-install.pthEntfernen Sie aus der Datei die entsprechende Zeile (dies sollte ein Pfad zum Quellverzeichnis oder einer Eidatei sein).
Glarrain
quelle
43
Überraschenderweise gibt es dafür keine entsprechende Deinstallationsmöglichkeit.
Drake Guan
4
@ Drake ja, eigentlich ziemlich nervig
Glarrain
4
Mit der aktuellen Pip-Version funktioniert die Deinstallation auch für Pakete, die mit -eOption installiert wurden .
Berühmte Garkin
9
für mich mit 8.1.2 pip uninstall package_namefunktioniert, aber pip uninstall .nicht funktioniert
verwirrt00
5
Es ist eine offene Frage gegen pip hier für die Fähigkeit zu entfernen editierbare installierten Pakete.
Chris Hunt
22

Eine einfachere Möglichkeit, dasselbe mit der neuen Version von setup_tools zu tun, besteht darin, Folgendes auszuführen:

python setup.py develop -u

Was im Grunde das Gleiche tut wie das, was @glarrain in seiner Antwort beschreibt.

Ahmed Shariff
quelle
2
Soll dieser Befehl ausgegeben werden? Ich bekomme es sagt, running developaber ich habe immer noch die .egg-infoDatei ... soll es entfernt werden?
Pinocchio
Was ist die "neue Version von setup_tools", mit der diese Antwort funktioniert? Können Sie das bitte bestätigen?
Charlie Parker
Garantiert Ihre Antwort, dass man Thins nicht manuell entfernen muss?
Charlie Parker
Es werden keine Ausgaben erzeugt. Nach meinem Verständnis sollte es entfernt werden: "--uninstall, -u Hebt die Bereitstellung des aktuellen Projekts auf. Sie können den Staging-Bereich mit der Option --install-dir oder -d festlegen. Die erstellte .egg-link-Datei wird entfernt werden, falls vorhanden und es zeigt immer noch auf das Projektverzeichnis. " von setuptools docs . Lädt es nach dem Ausführen immer noch den Inhalt aus dem Entwicklungsverzeichnis?
Ahmed Shariff
@CharlieParker Ich bin mir nicht sicher, in welcher Version dies eingeführt wurde. Ich musste diese Dateien nie manuell entfernen.
Ahmed Shariff
10

Installieren Sie ein Entwicklungspaket mit cmd:

pip install --editable .

Deinstallieren:

rm -r $(find . -name '*.egg-info')

Jetzt können Sie verwenden:

pip uninstall package_name 

oder python setup.py develop --uninstalloderpython setup.py develop -u

Legolas Bloom
quelle
4
Können Sie bitte angeben, von wo aus Sie diesen zweiten Befehl ausführen?
Ethanabrooks
1
@ethanabrooks .ist das aktuelle Verzeichnis, Sie verwenden den vollständigen absoluten Pfad des Pakets.
Legolas Bloom
1
Unvollständig. Was ist mit allen Python-Paketen? ( site-packagesdir)
Jorge Orpinel
Dadurch wird die Installation nicht vollständig rückgängig gemacht. Es löscht Inhalte aus dem Ordner, aus dem das Paket installiert wurde, löscht jedoch nicht den Symlink in Ihrem dist-packagesVerzeichnis (in dem Python nach dem installierten Paket sucht). Reiniger zu verwenden python setup.py develop -u.
Mark Amery
@ MarkAmery Danke, pip uninstall package_namearbeite jetzt.
Legolas Bloom
6

Dies ist ein Fehler unter Debian / Ubuntu Linux mit OS-installiertem Pip (v8.1.1 für mich), mit dem Sie auch dann aufrufen sudo pip, wenn Sie Pip aktualisiert haben (z. B. get-pip.py). Siehe https://github.com/pypa/pip/issues/4438

Eine Diskussion zum Aufräumen finden Sie unter /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , obwohl es dort Lösungen gibt Sorte "Alles entfernen".

... pip-Pakete [go] to /usr/local/lib/python2.7/dist-packagesund apt-Pakete to/usr/lib/python2.7/dist-packages

... wurden auch einige Pakete installiert ~/.local/lib.

Für mein System musste ich nur entfernen /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

matt wilkie
quelle
Für mich hat es gut pip uninstall libraryfunktioniert. Wenn Sie zur Antwort des OP gehen, scheint es etwas Seltsames an seiner Bibliothek zu sein, das beschädigt wurde. Hoffentlich spart dies den Leuten Zeit, wenn sie das nächste Mal hierher kommen. Es gibt jedoch viele verschiedene Optionen, die funktionieren könnten
Charlie Parker
5

Es stellt sich heraus, dass meine Installation irgendwie beschädigt war.

Ich konnte den Eintrag finden in:

/usr/local/lib/python2.7/site-packages/easy-install.pth

Um das Problem zu lösen, habe ich die Zeile in der .pth-Datei von Hand entfernt!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...
Michael_Scharf
quelle
1
Was bedeutet es, dass Ihre Installation beschädigt war?
Charlie Parker
-1

Deinstallieren Sie einfach das Paket, das Sie im bearbeitbaren Modus installiert haben:

pip uninstall yourpackage
Apteryx
quelle
9
OP hat dies versucht und sagt es in seiner Frage. Dies funktioniert nicht unbedingt mit Paketen, die als "bearbeitbar" installiert wurden
dusktreader
2
@dusktreader: Ich bin nicht sicher, was mit dem pip uninstallBefehl von OP los ist (möglicherweise eine veraltete Version von pip?), aber ich habe überprüft, dass es unter normalen Umständen genau das tut, was in der von @glarrain akzeptierten Antwort manuell vorgeschlagen wurde. Wenn es für Sie nicht funktioniert, geben Sie bitte genau an, was Sie hier tun, damit wir das Problem weiter untersuchen können.
Apteryx
@Apteryx warte sagst du das funktioniert auch im bearbeitbaren Modus?
Charlie Parker
Diese Antwort hat bei mir funktioniert. Ich denke, es hat beim OP nicht funktioniert, denn wenn Sie seine Antwort überprüfen, hatte er eine seltsame beschädigte Installation (oder sein Computer war in einem seltsamen Zustand). pip uninstall pkgarbeitet afaik.
Charlie Parker