it-swarm.com.de

Wie deinstalliere ich ein Python-Paket, das mit distutils installiert wurde?

Können Sie das Verzeichnis einfach aus Ihrer Python-Installation löschen oder gibt es veraltete Dateien, die Sie löschen müssen?

84
Hortitude

Sie hängt von den Optionen ab, die Sie an install übergeben, und den Inhalten der distutils-Konfigurationsdateien auf dem System/im Paket. Ich glaube nicht, dass Dateien außerhalb der auf diese Weise angegebenen Verzeichnisse geändert werden.

distutils hat zu diesem Zeitpunkt noch keinen Deinstallationsbefehl

Es ist auch bemerkenswert, dass das Löschen eines Pakets/Eies zu Abhängigkeitsproblemen führen kann - Dienstprogramme wie easy_install versuchen, solche Probleme zu lindern.

40
cdleary

Die drei Dinge, die installiert werden müssen, müssen gelöscht werden:

  1. Pakete/Module
  2. Skripte
  3. Datei

Jetzt auf meinem Linux-System leben diese in:

  1. /usr/lib/python2.5/site-packages
  2. / usr/bin
  3. / usr/share

Auf einem Windows-System befinden sie sich jedoch eher im Python-Distributionsverzeichnis. Ich habe keine Ahnung von OSX, es sei denn, es ist eher ein Linux-Muster.

18
Ali Afshar

Ein weiterer Zeitstempel-basierter Hack:

  1. Erstellen Sie einen Anker: touch /tmp/ts
  2. Installieren Sie das zu entfernende Paket erneut: python setup.py install --prefix=<PREFIX>
  3. Entfernen Sie Dateien, die neuer als die Ankerdatei sind: find <PREFIX> -cnewer /tmp/ts | xargs rm -r
15
maximk

Ja, es ist sicher, alles, was installiert wird, einfach zu löschen. Dies gilt für installierte Ordner oder .Egg-Dateien. Natürlich funktioniert alles, was von diesem Code abhängt, nicht mehr. 

Wenn Sie es wieder zum Laufen bringen wollen, installieren Sie es einfach. 

Ü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.

7
Salim Fadhley

Wenn es sich um Test- und/oder Entwicklungszwecke handelt, verfügt setuptools über einen -evelop - Befehl, der bei jeder Änderung aktualisiert wird (Sie müssen also nicht bei jeder Änderung deinstallieren und erneut installieren). . Sie können das Paket auch mit diesem Befehl deinstallieren.

Wenn Sie dies verwenden, bleibt alles, was Sie als script deklarieren, als verbliebene Datei zurück.

4
Jason Baker

In Ubuntu 12.04 habe ich festgestellt, dass der einzige Ort, an dem Sie standardmäßig suchen müssen, unter liegt

/usr/local/lib/python2.7/

Und entfernen Sie einfach den zugehörigen Ordner und die Datei, falls vorhanden!

4
Hydrox24

Für Windows 7

Systemsteuerung -> Programme -> Deinstallieren

, dann 

wählen Sie das zu entfernende Python-Paket aus.

2
b_dev

Ich habe gerade ein Python-Paket deinstalliert, und obwohl ich nicht bestimmt bin, habe ich es perfekt gemacht, bin aber einigermaßen zuversichtlich. 

Zuerst habe ich eine Liste von all Python-Dateien erhalten, die nach Datum geordnet sind, unter der Annahme, dass alle Dateien in meinem Paket mehr oder weniger den gleichen Zeitstempel haben und keine anderen Dateien.

Glücklicherweise habe ich Python unter /opt/Python-2.6.1 installiert. Wenn ich den Python meiner Linux-Distribution verwendet hätte, hätte ich alles nach /usr durchsucht, was sehr lange gedauert hätte.

Dann habe ich nur diese Liste durchgesehen und mit Erleichterung festgestellt, dass alles, was ich wollte, aus einem Verzeichnis /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/ und einer Datei /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.Egg-info bestand.

Also habe ich die gerade gelöscht.

So habe ich die datumsortierte Liste der Dateien erhalten:

find "[email protected]" -printf '%[email protected] ' -ls | sort -n | cut -d\ -f 2-

(Ich denke, das muss übrigens GNU "find" sein; der Flavour, den Sie unter OS X bekommen, kennt nicht "-printf '% T @'")

Ich benutze das alle die Zeit.

2
offby1

für Python in Windows:

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
2
user8074545

install --record + xargs rm

Sudo python setup.py install --record files.txt
xargs Sudo rm -rf < files.txt

entfernt alle Dateien und lässt leere Verzeichnisse zurück.

Das ist nicht ideal, es sollte ausreichen, um Paketkonflikte zu vermeiden.

Und dann können Sie den Job manuell beenden, indem Sie files.txt lesen, 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.

Löschen Sie unter Mac OSX diese beiden Verzeichnisse unterpathToPython/site-packages/manuell: 

  • {Paketnamen}
  • {packageName} - {version} -info

so entfernen Sie zum Beispielpyasn1, ein distutils installiertes Projekt:

  • rm -rf lib/python2.7/site-packages/pyasn1
  • rm -rf lib/python2.7/site-packages/pyasn1-0.1.9-py2.7.Egg-Info

So finden Sie heraus, wo sich Ihre Site-Pakete befinden:

python -m site
0
Lynne