Entfernen des im Entwicklungsmodus installierten Python-Moduls

89

Hallo, ich habe die Python-Verpackung mit setuptools ausprobiert und zum Testen das Modul im Entwicklungsmodus installiert. dh

python setup.py develop

Dies hat mein Modulverzeichnis zu sys.path hinzugefügt. Jetzt möchte ich das Modul entfernen. Gibt es eine Möglichkeit, dies zu tun?

Danke im Voraus

Copyninja
quelle
4
Verwenden Sie einen pipanderen Manager mit Deinstallationsfunktionen zum Verwalten von Python-Paketen.
Tomasz Wysocki
1
@Tomasz Wie machst du das Äquivalent von python setup.py developmit pip?
Akaihola
7
pip install -e.
Tomasz Wysocki
11
'pip' ist nicht die richtige Antwort auf diese Frage. Wenn Sie ein Projekt installieren, das Sie mit 'pip' entwickeln, um es auszuführen oder zu verwenden, müssen Sie es jedes Mal neu installieren, wenn Sie den Quellcode ändern. Der richtige Weg ist die Verwendung von 'setup.py Develop', wie in der ursprünglichen Frage angegeben.
Jonathan Hartley
6
@ JonathanHartley Das ist einfach falsch; pip hat ein --editable(oder -e) Argument, das sich ungefähr gleichwertig mit setuptoolsdevelop verhält . Ich dachte, das wäre vielleicht --editableneuer als Ihr Kommentar, aber nein - eine schnelle Suche im Pip-Repo auf GitHub zeigt bereits 2009 Verweise auf bearbeitbare Dateien in Commits. Außerdem habe Tomasz Wysocki bereits darauf hingewiesen, bevor Sie einen Kommentar abgegeben haben !
Mark Amery

Antworten:

222

Verwenden Sie die Option --uninstalloder , um:-udevelop

python setup.py develop --uninstall

Dadurch wird es aus easy-install.pth entfernt und der .egg-Link gelöscht. Das einzige, was es nicht tut, ist (noch) Skripte zu löschen.

PJ Eby
quelle
3
Beachten Sie, dass Sie, wenn Ihre Entwicklungsversion einige ausführbare Dateien installiert hat und Sie diese in Ihrer geändert haben, diese setup.pymanuell entfernen sollten.
Norok2
1
Ich führe es wie erklärt aus, keine Fehler in der Ausgabe, aber ich kann mein Entwicklungspaket trotzdem global importieren, es scheint, dass es nicht entfernt wurde. EDIT: Ich weiß warum, ich musste es mit --userOption ausführen, wie ich es während der Installation getan habe:python setup.py develop --uninstall --user
Marek
Ich denke nicht, dass dies sicher ist, da sich die Dinge beim Entwickeln (zum Beispiel) Umbenennen des Moduls ändern können. Sie müssen alles manuell entfernen.
Mathtick
@ norok2 Was sind die manuellen Befehle, die man ausführen muss, um diese ausführbaren Dateien zu entfernen. Soweit ich weiß, funktioniert das oben Gesagte für bestimmte Versionen von Python / Pip, obwohl ich nicht sicher bin, welche.
Charlie Parker
1
@CharlieParker rmoder delabhängig von Ihrem Betriebssystem. Was ich damit gemeint habe ist, dass wenn Sie zum Zeitpunkt der Installation einige ausführbare Dateien hatten und deren Namen dann in Ihrer ändern (oder entfernen) setup.py, diese dann setup.pynicht mehr bekannt sind (unabhängig von Ihrer pip/ pythonVersion und Sie müssen sich um sie kümmern Sie befinden sich normalerweise in einem binVerzeichnis auf POSIX-Systemen (Linuxes, BSDs, MacOS X lesen) und können sich nicht an Win erinnern.
norok2
16

Bearbeiten Sie easy-install.pth in Ihrem Site-Packages-Verzeichnis und entfernen Sie die Zeile, die auf Ihre Entwicklungsversion dieses Pakets verweist.

Zooko
quelle
Ja, ich habe genau das getan und eine weitere Datei war dort mit dem Namen package-egg-link oder etwas, das ich entfernt habe und jetzt wird der Verweis auf das Modul entfernt. Danke :)
copyninja
10
"setup.py Develop --uninstall" erledigt dies für Sie, siehe @ pjebys Antwort
Jonathan Hartley
3
Dies funktionierte bei mir, wenn es develop --uninstallfehlschlug, weil ich ein Projekt in zwei Teile geteilt hatte und das falsche im ursprünglichen Verzeichnis verblieb.
Wesley Baugh
1

Ich hatte schon einmal ein ähnliches Problem. Ich habe die Python-Shell geladen, das Modul importiert und dann sein __file__Attribut gedruckt . Von dort würde ich einfach den Ordner oder die Datei entfernen, die zugeordnet wurden.

Möglicherweise möchten Sie die Verwendung von virtualenv untersuchen. Mit diesem System können Sie eine von Ihrem System getrennte Python-Instanz erstellen. Alle Module, die Sie in dieser Instanz installieren oder verwenden, sind in sich geschlossen, einschließlich der Version des Moduls.

Ich behalte alle meine Projekte jetzt in der eigenen virtuellen Umgebung, die es mir ermöglicht, alle gewünschten Module zu installieren und zu verwenden, ohne mir Gedanken darüber machen zu müssen, ob Module aus anderen Projekten verschraubt werden.

Tanerax
quelle
Nun, wenn ich das nächste Mal mit Paketen spiele, werde ich dies verwenden, damit ich mein System Python nicht vermassle. Danke für die Info
Copyninja