Antworten:
Dies hängt von den Optionen ab, an die Sie übergeben, installund vom Inhalt der Konfigurationsdateien von distutils auf dem System / im Paket. Ich glaube nicht, dass Dateien außerhalb der auf diese Weise angegebenen Verzeichnisse geändert werden.
Insbesondere hat distutils derzeit keinen Deinstallationsbefehl .
Es ist auch bemerkenswert, dass das Löschen eines Pakets / Eies Abhängigkeitsprobleme verursachen kann - Dienstprogramme wie der easy_installVersuch, solche Probleme zu beheben.
Die drei Dinge, die installiert werden und die Sie löschen müssen, sind:
Jetzt auf meinem Linux-System leben diese in:
Auf einem Windows-System befinden sie sich jedoch eher vollständig im Python-Verteilungsverzeichnis. Ich habe keine Ahnung von OSX, außer dass es eher so ist, dem Linux-Muster zu folgen.
Ein weiterer Hack auf der Basis von Zeitstempeln:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| xargs rm -r. Ich empfehle, jede Datei manuell durchzugehen . Auf ext4 (und anderen Dateisystemen) werden auch findalle Ordner aufgelistet. Wenn Ihr Präfix war /usr, werden Sie löschen/usr/* .
Ja, es ist sicher, einfach alles zu löschen, was distutils installiert hat. Das gilt für installierte Ordner oder .egg-Dateien. Natürlich funktioniert alles, was von diesem Code abhängt, nicht mehr.
Wenn Sie möchten, dass es wieder funktioniert, installieren Sie es einfach erneut.
Übrigens, wenn Sie Distutils verwenden, sollten Sie auch die Multi-Version-Funktion in Betracht ziehen. Sie können mehrere Versionen eines einzelnen Pakets installieren. Das bedeutet, dass Sie keine alte Version eines Pakets löschen müssen, wenn Sie einfach eine neuere Version installieren möchten.
Wenn dies zu Test- und / oder Entwicklungszwecken dient, hat setuptools eine Entwicklung , der jedes Mal aktualisiert wird, wenn Sie eine Änderung vornehmen (Sie müssen also nicht jedes Mal deinstallieren und neu installieren, wenn Sie eine Änderung vornehmen). Mit diesem Befehl können Sie das Paket auch deinstallieren.
Wenn Sie dies verwenden, bleibt alles, was Sie als Skript deklarieren, als verweilende Datei zurück.
install --record + xargs rm
sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt
Entfernt alle Dateien und hinterlässt leere Verzeichnisse.
Das ist nicht ideal, es sollte ausreichen, um Paketkonflikte zu vermeiden.
Und dann können Sie den Job manuell beenden, wenn Sie möchten, indem Sie lesen files.txt , oder mutiger sein und auch das Entfernen leerer Verzeichnisse automatisieren.
Ein sicherer Helfer wäre:
python-setup-uninstall() (
sudo rm -f files.txt
sudo python setup.py install --record files.txt && \
xargs rm -rf < files.txt
sudo rm -f files.txt
)
Getestet in Python 2.7.6, Ubuntu 14.04.
für Python in Windows:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
Ich habe gerade ein Python-Paket deinstalliert, und obwohl ich nicht sicher bin , ob ich es perfekt gemacht habe, bin ich ziemlich zuversichtlich.
Ich begann damit, eine Liste von allen zu bekommen Python-bezogenen Dateien zu erhalten, sortiert nach Datum, unter der Annahme, dass alle Dateien in meinem Paket mehr oder weniger den gleichen Zeitstempel haben und keine anderen Dateien.
Zum Glück habe ich Python unter installiert /opt/Python-2.6.1; Wenn ich den Python verwendet hätte, der mit meiner Linux-Distribution geliefert wird, hätte ich alles durchsuchen müssen /usr, was lange gedauert hätte.
Dann habe ich nur diese Liste untersucht und mit Erleichterung festgestellt, dass alles, was ich nuklearisieren wollte, aus einem Verzeichnis /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/und einer Datei bestand /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.
Also habe ich diese einfach gelöscht.
So habe ich die nach Datum sortierte Liste der Dateien erhalten:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(Ich denke, das muss übrigens GNU "find" sein; der Geschmack, den Sie unter OS X erhalten, weiß nichts über "-printf '% T @'")
Ich benutze das die ganze Zeit.
Unter Mac OSX, manuell löschen Sie diese 2 - Verzeichnisse unter Ihrem pathToPython / site-packages / funktioniert:
Zum Beispiel, um pyasn1 zu entfernen , ein von distutils installiertes Projekt:
So finden Sie heraus, wo sich Ihre Site-Pakete befinden:
python -m site
ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible.
ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible.
Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit
Attempting uninstall: torch
Found existing installation: torch 1.0.0
Uninstalling torch-1.0.0:
Successfully uninstalled torch-1.0.0
Attempting uninstall: torchvision
Found existing installation: torchvision 0.2.1
Uninstalling torchvision-0.2.1:
Successfully uninstalled torchvision-0.2.1
Attempting uninstall: entrypoints
Found existing installation: entrypoints 0.2.3
ERROR: Cannot uninstall 'entrypoints'. 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 tippe ich:
conda uninstall entrypoints
pip install --upgrade pycodestyle
pip install nuscenes-devkit
Getan!