Risposte:
Varia in base alle opzioni a cui si passa installe al contenuto dei file di configurazione di distutils sul sistema / nel pacchetto. Non credo che alcun file venga modificato al di fuori delle directory specificate in questi modi.
In particolare, distutils non ha un comando di disinstallazione in questo momento.
È anche interessante notare che l'eliminazione di un pacchetto / uovo può causare problemi di dipendenza - utilità come il easy_installtentativo di alleviare tali problemi.
Le tre cose che vengono installate e che dovrai eliminare sono:
Ora sul mio sistema Linux questi vivono in:
Ma su un sistema Windows è più probabile che siano interamente all'interno della directory di distribuzione di Python. Non ho idea di OSX tranne che è più simile a seguire il modello Linux.
Un altro trucco basato sul timestamp:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| xargs rm -r. Consiglio di esaminare manualmente ogni file . Su ext4 (e altri file system), findverranno elencate anche tutte le cartelle . Se il tuo prefisso era /usr, lo cancellerai/usr/* .
Sì, è sicuro eliminare semplicemente tutto ciò che distutils ha installato. Questo vale per le cartelle installate o per i file .egg. Naturalmente tutto ciò che dipende da quel codice non funzionerà più.
Se vuoi farlo funzionare di nuovo, è sufficiente reinstallarlo.
A proposito, se stai usando distutils considera 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 vecchia versione di un pacchetto se si desidera semplicemente installare una versione più recente.
Se questo è per scopi di test e / o sviluppo, setuptools ha uno sviluppo comando di che si aggiorna ogni volta che si apporta una modifica (quindi non è necessario disinstallare e reinstallare ogni volta che si apporta una modifica). E puoi disinstallare il pacchetto anche usando questo comando.
Se lo usi, tutto ciò che dichiari come script verrà lasciato come file persistente.
install --record + xargs rm
sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt
rimuove tutti i file e lascia le directory vuote.
Non è l'ideale, dovrebbe essere sufficiente per evitare conflitti tra pacchetti.
E poi puoi finire il lavoro manualmente se vuoi leggendo files.txt, o essere più coraggioso e automatizzare anche la rimozione delle directory vuote.
Un aiuto sicuro 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.
per Python in Windows:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
Ho appena disinstallato un pacchetto Python e, anche se non sono sicuro di averlo fatto perfettamente, sono ragionevolmente fiducioso.
Ho iniziato ottenendo un elenco di tutti i file relativi a python, ordinati per data, partendo dal presupposto che tutti i file nel mio pacchetto avranno più o meno lo stesso timestamp e nessun altro file lo farà.
Fortunatamente, ho installato Python sotto /opt/Python-2.6.1; se avessi usato il Python fornito con la mia distribuzione Linux, avrei dovuto setacciarlo tutto /usr, il che avrebbe richiesto molto tempo.
Poi ho esaminato quella lista, e notato con sollievo che tutte le cose che ho voluto Nuke consisteva 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 li ho appena cancellati.
Ecco come ho ottenuto l'elenco dei file ordinato per data:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(A proposito, penso che debba essere GNU "find"; il sapore che ottieni su OS X non conosce "-printf '% T @'")
Lo uso sempre .
Su Mac OSX, elimina manualmente queste 2 directory nel tuo pathToPython / site-packages / funzionerà:
ad esempio, per rimuovere pyasn1 , che è un progetto installato da distutils:
Per scoprire dove si trovano i pacchetti del tuo sito:
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.
Quindi digito:
conda uninstall entrypoints
pip install --upgrade pycodestyle
pip install nuscenes-devkit
Fatto!