2008-12-31 12 views

risposta

35

Varia in base alle opzioni passate a install e ai contenuti di distutils configuration files sul sistema/nel pacchetto. Non credo che nessun file venga modificato al di fuori delle directory specificate in questi modi.

In particolare, distutils does not have an uninstall command in questo momento.

È anche degno di nota che l'eliminazione di un pacchetto/uovo può causare problemi di dipendenza - utilità come easy_install tentativo di alleviare tali problemi.

+3

Potete per favore aggiornare questo per affrontare direttamente il file di parte persistente della questione? –

+0

Pensavo di averlo fatto - nessun file viene creato al di fuori delle directory specificate dalla configurazione di distutils e installa i flag, quindi qualsiasi file "persistente" sarà presente in queste directory. Varia da pacchetto a pacchetto. – cdleary

+1

@cdleary: grazie, ma speravo che avresti semplicemente chiarito e rafforzato la tua risposta, non aggiungere una lunga discussione sui commenti. –

4

Se questo è per scopi di test e/o di sviluppo, setuptools ha un comando develop che si aggiorna ogni volta che si apporta una modifica (quindi non è necessario disinstallare e reinstallare ogni volta che si apporta una modifica). Ed è possibile disinstallare il pacchetto usando anche questo comando.

Se si utilizza questo, qualsiasi cosa che si dichiara come uno script verrà lasciato come file permanente.

15

Le tre cose che vengono installate che sarà necessario eliminare sono:

  1. Pacchetti/moduli
  2. Script file di
  3. dati

Ora sul mio sistema Linux questi vivono in :

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

Ma su un sistema Windows sono più probabilità di essere interamente all'interno della directory di distribuzione Python. Non ho idea di OSX tranne che è più come seguire il modello di Linux.

7

Sì, è possibile cancellare semplicemente tutto ciò che distutils è installato. Questo vale per le cartelle installate o i file .egg. Naturalmente tutto ciò che dipende da quel codice non funzionerà più.

Se si desidera farlo funzionare di nuovo, è sufficiente reinstallare.

A proposito, se si stanno utilizzando distutils, si consideri anche l'utilizzo della funzione multi-versione. Ti consente di avere più versioni di ogni singolo pacchetto installato. Ciò significa che non è necessario eliminare una versione precedente di un pacchetto se si desidera semplicemente installare una versione più recente.

2

Ho appena disinstallato un pacchetto python, e anche se non sono certo l'ho fatto perfettamente, sono ragionevolmente fiducioso.

ho cominciato da ottenere un elenco di tutti i file python-correlate, ordinati per data, partendo dal presupposto che tutti i file nel mio pacchetto avrà più o meno la stessa data e ora, e non altri file verranno.

Fortunatamente, ho python installato sotto /opt/Python-2.6.1; se avessi usato il Python fornito con la mia distribuzione Linux, avrei dovuto setacciare tutto il /usr, che avrebbe richiesto molto tempo.

Quindi ho appena esaminato quella lista e ho notato con sollievo che tutte le cose che volevo nuke consistevano in una directory, /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/ e un file, /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.

Quindi ho appena cancellato quelli.

Ecco come ho ottenuto la lista Data-ordinato di file:

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

(penso che ha avuto modo di essere GNU "trovare", tra l'altro, il sapore che si ottiene su OS X doesn' so di "-printf '% T @'")

Io uso quello il il tempo.

2

Per Windows 7,

Pannello di controllo -> Programmi -> Disinstalla

, quindi

scegliere il pacchetto python da rimuovere.

+7

Questo suggerimento è stato utile per me. Grazie. – Mauricio

+0

@Mauricio Non vedo le vecchie versioni nell'elenco ma vedo i file delle uova nei pacchetti del sito. È un problema? – Olexandr

12

Un'altra mod basato timestamp:

  1. Creare un'ancora: touch /tmp/ts
  2. Reinstallare il pacchetto da rimuovere: python setup.py install --prefix=<PREFIX>
  3. Rimuovere i file che cosa sono più recente rispetto al file di ancoraggio: find <PREFIX> -cnewer /tmp/ts | xargs rm -r
4

In Ubuntu 12.04, ho trovato che l'unico posto che è necessario cercare in base all'impostazione predefinita è

/usr/local/lib/python2.7/ 

E semplicemente rimuovere la cartella e il file associati, se ce n'è uno!

1

install --record + xargs rm

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

rimuove tutti i file e le directory vuote, ma lascia dietro.

Non è l'ideale, dovrebbe essere sufficiente per evitare conflitti di pacchetti.

E poi si può finire il lavoro manualmente se si desidera leggendo files.txt, o essere più coraggioso e automatizzare la rimozione directory vuota pure.

Un aiuto sicura sarebbe:

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 
) 

testato in Python 2.7.6, Ubuntu 14.04.

1

per Python in Windows:

python -m pip uninstall "package_keyword" 
uninstall **** (y/n)? 
+0

Grazie a Ciro per dare l'immagine come installare. – user8074545

+0

significa anche disinstallare l'immagine. – user8074545

Problemi correlati