web-dev-qa-db-de.com

python setup.py deinstallieren

Ich habe ein Python-Paket mit python setup.py install installiert.

Wie deinstalliere ich es?

689
flybywire

Sie müssen alle Dateien manuell entfernen und auch alle anderen Elemente der Installation rückgängig machen.

Wenn Sie die Liste aller Dateien nicht kennen, können Sie sie mit der Option --record erneut installieren und sich die Liste ansehen.

Um eine Liste der installierten Dateien aufzuzeichnen, können Sie Folgendes verwenden:

python setup.py install --record files.txt

Nach der Deinstallation können Sie xargs zum Entfernen verwenden:

cat files.txt | xargs rm -rf

Wenn Sie Windows verwenden, verwenden Sie Powershell: 

Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}

Dann löschen Sie auch das enthaltende Verzeichnis, z. /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.Egg/ auf macOS. Es enthält keine Dateien, aber Python importiert immer noch ein leeres Modul:

>>> import my_module
>>> my_module.__file__
None

Nach dem Löschen zeigt Python:

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
877

Für mich funktioniert das meistens:

haben ein Rohr installiert, z.

$ easy_install pip

Prüfen Sie, wie Ihr installiertes Paket aus Pip-Sicht benannt wird:

$ pip freeze

Hier werden die Namen aller Pakete aufgelistet, die Sie installiert haben (und die von pip erkannt wurden) ..__ Der Name kann länger sein, und verwenden Sie nur den Namen des Pakets, das an und hinter #Egg= angezeigt wird. In den meisten Fällen können Sie auch den Versionsteil ignorieren (was auch immer == oder - lautet).

Dann deinstalliere das Paket:

$ pip uninstall package.name.you.have.found

Wenn Sie nach dem Entfernen des Pakets gefragt werden, haben Sie Glückspilz und es wird entfernt.

pip erkennt alle Pakete, die per pip installiert wurden. Die meisten über easy_install oder setup.py installierten Pakete werden ebenfalls erkannt, dies kann jedoch in einigen seltenen Fällen fehlschlagen.

Hier ist ein echtes Beispiel aus meinem lokalen Test mit dem Paket ttr.rdstmc unter MS Windows.

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://[email protected]/vlcinsky/[email protected]#Egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev

$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
  c:\python27\lib\site-packages\ttr.rdstmc.Egg-link
Proceed (y/n)? y
  Successfully uninstalled ttr.rdstmc

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

Bearbeiten Sie 2015-05-20

Alles, was oben geschrieben wurde, gilt trotzdem. Es gibt jetzt kleine Modifikationen.

Installieren Sie pip in python 2.7.9 und python 3.4

Aktuelle Python-Versionen enthalten ein Paket ensurepip, mit dem Pip auch im Offline-Modus installiert werden kann:

$ python -m surepip --upgrade

Auf einigen Systemen (wie Debian Jessie) ist dies nicht verfügbar (um zu verhindern, dass die System-Python-Installation beschädigt wird).

grep oder find verwenden

Die obigen Beispiele setzen voraus, dass Sie grep installiert haben. Ich hatte (zu der Zeit, als ich MS Windows auf meinem Rechner hatte) eine Reihe von Linux-Dienstprogrammen (inkl. Grep) installiert. Alternativ können Sie native MS Windows find verwenden oder diese Filterung einfach ignorieren und den Namen in einer etwas längeren Liste der erkannten Python-Pakete suchen.

206
Jan Vlcinsky

Die Antwort # 1 hat Probleme:

  • Funktioniert nicht auf Mac.
  • Wenn eine Datei installiert ist, die Leerzeichen oder andere Sonderzeichen enthält, schlägt der Befehl xargs fehl und löscht alle Dateien/Verzeichnisse, die den einzelnen Wörtern entsprechen.
  • der -r in rm -rf ist nicht erforderlich und kann im schlimmsten Fall Dinge löschen, die Sie nicht möchten.

Stattdessen für Unix-ähnliche:

Sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n' '\0' < files.txt | xargs -0 Sudo rm -f --

Und für Windows:

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

Es gibt auch unlösbare Probleme bei der Deinstallation von setup.py install, was Sie im Normalfall nicht stört. Eine vollständigere Antwort finden Sie auf dieser Wiki-Seite:

https://ofswiki.org/wiki/Uninstalling_setup.py_install

67
Ian Kelling

Zeichnen Sie zuerst die Dateien auf, die Sie installiert haben. Sie können diesen Befehl wiederholen, auch wenn Sie zuvor setup.py install ausgeführt haben:

python setup.py install --record files.txt

Wenn Sie deinstallieren möchten, können Sie einfach:

Sudo rm $(cat files.txt)

Dies funktioniert, weil der Befehl rm eine durch Whitespace getrennte Liste von Dateien benötigt, die gelöscht werden sollen, und Ihr Installationsdatensatz eine solche Liste ist.

31
nathan

Jetzt bietet Ihnen Python die Wahl, pip während der Installation zu installieren (ich bin unter Windows und Python tut dies zumindest für Windows!). Wenn Sie sich für die Installation von pip während der Installation von Python entschieden haben (Sie müssen sich nicht entscheiden, da dies Standard ist), ist pip bereits für Sie installiert. Geben Sie dann in der Eingabeaufforderung pip ein. Es sollte eine Hilfe angezeigt werden. Dort finden Sie die notwendigen Gebrauchsanweisungen. Z.B. pip list zeigt Ihnen die Liste der installierten Pakete. Sie können verwenden

pip uninstall package_name

deinstallieren Sie alle Pakete, die Sie nicht mehr benötigen. Lesen Sie mehr hier (Pip-Dokumentation) .

13

Faulenzer: Sie können die Deinstallation einfach über das Windows-Installationsmenü (wenn Sie Windows verwenden) oder über den rpm-Befehl deinstallieren, vorausgesetzt, Sie müssen sie erst neu installieren, nachdem Sie ein Distributionspaket erstellt haben.

Zum Beispiel,

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

("Foo" ist natürlich ein Beispiel).

8
RedGlyph

Wechseln Sie in Ihr Python-Paketverzeichnis und entfernen Sie Ihre .Egg-Datei

In Python 2.6 (Ubuntu): /usr/local/lib/python2.6/dist-packages/

5
user149513

Möglicherweise können Sie dies alternativ tun: -

1) Holen Sie sich die Python-Version -

[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55) 

-> Der obige Befehl gibt die aktuelle Python-Version an, die 2.4.3 ist.

2) Holen Sie sich das Installationsverzeichnis von Python -

[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz

-> Vom obigen Befehl können Sie das Installationsverzeichnis erhalten, das heißt - /usr/lib/python2.4/site-packages

3) Von hier aus können Sie die Pakete und Python-Egg-Dateien entfernen

[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.Egg paramiko-1.7.7.1-py2.4.Egg paramiko-1.9.0-py2.4.Egg

Das funktionierte für mich. Und ich konnte das Paket deinstallieren, was mich beunruhigte :)

3
COD3R

Ich denke, Sie können die Datei setup.py öffnen, den Paketnamen finden und dann pip fragen, um es zu deinstallieren.

Angenommen, der Name ist in einer 'METADATA'-Variablen verfügbar:

pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
3
ThorSummoner

Ich beantworte die Frage nicht genau, aber sie hilft mir jeden Tag 

Installiere deine Pakete mit

pip install .

Dies setzt das Paket in $HOME/.local. Deinstalliere mit

pip uninstall <package_name>
2
Nico Schlömer

Das, was Martin gesagt hat, die Installation-Ausgabe aufzeichnen und ein wenig bash-Scripting macht den Trick recht gut. Hier ist was ich mache ...

for i in $(less install.record);
Sudo rm $i;
done;

Und presto. Deinstalliert.

1
seabass

Ich hatte "python setup.py install" irgendwann in der Vergangenheit aus Versehen in meiner globalen Umgebung ausgeführt und hatte Schwierigkeiten beim Deinstallieren. Diese Lösungen haben nicht geholfen. "pip uninstall" funktionierte nicht mit "Kann 'splunk-appinspect' nicht deinstallieren. Es wurden keine Dateien zum Deinstallieren gefunden." "Sudo pip uninstall" hat nicht funktioniert "Deinstallation der Anforderung" splunk-appinspect "nicht möglich, nicht installiert". Ich habe versucht, pip zu deinstallieren, den Pip-Cache zu löschen, meine Festplatte nach dem Paket zu durchsuchen usw.

"pip show" führte mich schließlich zur Lösung, die "Location:" wies auf ein Verzeichnis und die Umbenennung dieses Verzeichnisses führte dazu, dass das Paket aus der Liste von pip entfernt wurde. Ich habe das Verzeichnis wieder umbenannt, und es erscheint nicht mehr in der Liste von Pip. Jetzt kann ich mein Paket in einer Virtualenv neu installieren.

0
mmacvicar

Ich hatte python setup.py install einmal in meinem PyCharm ausgeführt, es installiert alle Pakete in meiner Conda-Basisumgebung. Wenn ich später alle diese Pakete entfernen möchte, funktioniert pip uninstall nicht. Ich musste sie manuell aus /anaconda3/lib/python3.7/site-packages löschen :(

Daher sehe ich nicht den Grund, warum sie setup.py verwenden, anstatt die Datei Requirements.txt zu schreiben. Die Anforderungsdatei kann zum Installieren von Paketen in einer virtuellen Umgebung verwendet werden und sich nicht mit System-Python-Paketen herumschlagen.

0
Yossarian42

Es ist möglicherweise besser, verwandte Dateien zu entfernen, indem Sie zum Lesen von Befehlen die folgende Befehle verwenden:

Sudo python setup.py install --record files.txt
Sudo bash -c "cat files.txt | xargs rm -rf"
0
Mark Peng