Respostas:
Isso varia com base nas opções que você passa installe no conteúdo dos arquivos de configuração do distutils no sistema / no pacote. Não acredito que nenhum arquivo seja modificado fora dos diretórios especificados dessas maneiras.
Notavelmente, distutils não tem um comando de desinstalação neste momento.
É também digno de nota que deletar um pacote / ovo pode causar problemas de dependência - utilitários como easy_installtentam aliviar tais problemas.
As três coisas que são instaladas e que você precisa excluir são:
Agora, no meu sistema Linux, eles residem em:
Mas em um sistema Windows, é mais provável que estejam inteiramente no diretório de distribuição do Python. Não tenho ideia sobre o OSX, exceto que é mais provável que siga o padrão do Linux.
Outro hack baseado em timestamp:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| xargs rm -r. Eu recomendo revisar cada arquivo manualmente . No ext4 (e outros sistemas de arquivos), isso findirá listar todas as pastas também. Se o seu prefixo era /usr, você vai deletar/usr/* .
Sim, é seguro simplesmente excluir qualquer coisa que o distutils esteja instalado. Isso vale para pastas instaladas ou arquivos .egg. Naturalmente, qualquer coisa que dependa desse código não funcionará mais.
Se quiser que funcione novamente, basta reinstalar.
A propósito, se você estiver usando distutils, também considere usar o recurso de várias versões. Ele permite que você tenha várias versões de qualquer pacote único instalado. Isso significa que você não precisa excluir uma versão antiga de um pacote se quiser apenas instalar uma versão mais recente.
Se for para fins de teste e / ou desenvolvimento, setuptools tem um comando de desenvolvimento que atualiza toda vez que você faz uma alteração (para que você não precise desinstalar e reinstalar toda vez que fizer uma alteração). E você pode desinstalar o pacote usando este comando também.
Se você usar isso, tudo o que você declarar como um script será deixado para trás como um arquivo remanescente.
install --record + xargs rm
sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt
remove todos os arquivos, mas deixa diretórios vazios para trás.
Isso não é o ideal, deve ser suficiente para evitar conflitos de pacotes.
E então você pode terminar o trabalho manualmente, se quiser lendo files.txt, ou ser mais corajoso e automatizar a remoção de diretórios vazios também.
Um ajudante seguro seria:
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
)
Testado em Python 2.7.6, Ubuntu 14.04.
para Python no Windows:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
Acabei de desinstalar um pacote Python e, embora não tenha certeza se o fiz perfeitamente, estou razoavelmente confiante.
Comecei obtendo uma lista de todos os arquivos relacionados ao python, ordenados por data, supondo que todos os arquivos em meu pacote terão mais ou menos o mesmo carimbo de data / hora e nenhum outro arquivo terá.
Felizmente, tenho o python instalado no /opt/Python-2.6.1; se eu estivesse usando o Python que vem com minha distro Linux, teria que vasculhar tudo /usr, o que demoraria muito.
Então, apenas examinei essa lista e observei com alívio que todas as coisas que eu queria destruir consistiam em um diretório /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/, e um arquivo /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info,.
Então, acabei de deletar esses.
Veja como obtive a lista de arquivos classificada por data:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(Acho que deve ser GNU "encontrar", a propósito; o sabor que você obtém no OS X não sabe sobre "-printf '% T @'")
Eu uso que todo o tempo.
No Mac OSX, exclua manualmente esses 2 diretórios em pathToPython / site-packages / funcionará:
por exemplo, para remover pyasn1 , que é um projeto instalado com distutils:
Para descobrir onde está o seu site-packages:
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.
Então eu digito:
conda uninstall entrypoints
pip install --upgrade pycodestyle
pip install nuscenes-devkit
Feito!