Чи можете ви просто видалити каталог з вашої інсталяції python, або є якісь затяжні файли, які ви повинні видалити?
Відповіді:
Це залежить від параметрів, до яких ви переходите, installта вмісту файлів конфігурації distutils в системі / в пакеті. Я не вірю, що будь-які файли модифікуються поза каталогами, зазначеними цими способами.
Примітно, що в даний час distutils не має команди видалення .
Також варто зазначити, що видалення пакета / яйця може спричинити проблеми залежності - утиліти, наприклад, easy_installнамагаються усунути такі проблеми.
Три речі, які встановлюються, які вам потрібно буде видалити:
Зараз у моїй системі Linux вони живуть у:
Але в системі Windows вони, швидше за все, повністю знаходяться в каталозі розподілу Python. Я не маю уявлення про OSX, за винятком того, що більш приємно слідувати шаблону Linux.
Інший хак на основі штампа часу:
touch /tmp/tspython setup.py install --prefix=<PREFIX>find <PREFIX> -cnewer /tmp/ts | xargs rm -r| xargs rm -r. Я рекомендую переглядати кожен файл вручну . На ext4 (та інших файлових системах) це findтакож перерахує всі папки . Якщо ваш префікс був /usr, ви збираєтеся його видалити/usr/* .
Так, можна безпечно просто видалити все, що встановлено. Це стосується встановлених папок або файлів .egg. Звичайно, все, що залежить від цього коду, більше не працюватиме.
Якщо ви хочете змусити його працювати знову, просто переінсталюйте.
До речі, якщо ви використовуєте distutils, також розгляньте можливість використання багатоверсійної функції. Це дозволяє встановити кілька версій будь-якого окремого пакета. Це означає, що вам не потрібно видаляти стару версію пакета, якщо ви просто хочете встановити новішу версію.
Якщо це призначено для тестування та / або розробки, у setuptools є команда розробника, яка оновлюється кожного разу, коли ви вносите зміни (тому вам не доведеться видаляти та перевстановлювати кожен раз, коли ви вносите зміни). Ви також можете видалити пакет за допомогою цієї команди.
Якщо ви все-таки використовуєте це, все, що ви оголосите сценарієм, буде залишено як тривалий файл.
install --record + xargs rm
sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt
видаляє всі файли, але залишає порожні каталоги.
Це не ідеально, цього повинно бути достатньо, щоб уникнути конфліктів пакетів.
І тоді ви можете закінчити роботу вручну, якщо хочете, прочитавши files.txt, або сміливіше, а також автоматизуйте видалення порожнього каталогу.
Безпечним помічником буде:
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
)
Перевірено в Python 2.7.6, Ubuntu 14.04.
для Python в Windows:
python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
Я щойно видалив пакет python, і хоча я не впевнений що зробив це ідеально, я досить впевнений.
Я розпочав із отримання списку всіх файлів, пов’язаних з python, упорядкованих за датою, припускаючи, що всі файли в моєму пакунку матимуть більш-менш однакову позначку часу, і жодних інших файлів не буде.
На щастя, у мене встановлений python /opt/Python-2.6.1; якби я використовував Python, який поставляється з моїм дистрибутивом Linux, мені довелося б все це переглядати /usr, що зайняло б багато часу.
Потім я просто розглянув цей список і з полегшенням зазначив, що всі речі, які я хотів створити, складаються з одного каталогу /opt/Python-2.6.1/lib/python2.6/site-packages/module-name/та одного файлу /opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info.
Тож я їх просто видалив.
Ось як я отримав відсортований за датою список файлів:
find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-
(Я думаю, це має бути GNU "знайти", до речі; смак, який ви отримуєте на OS X, не знає про "-printf '% T @'")
Я використовую це все час.
На Mac OSX вручну видаліть ці 2 каталоги під вашим pathToPython / site-пакети / буде працювати:
наприклад, для видалення pyasn1 , який є встановленим проектом:
Щоб дізнатись, де знаходиться ваш сайт-пакет:
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.
Потім набираю:
conda uninstall entrypoints
pip install --upgrade pycodestyle
pip install nuscenes-devkit
Готово!