Как удалить пакет Python, который был установлен с помощью distutils? - PullRequest
85 голосов
/ 31 декабря 2008

Можете ли вы просто удалить каталог из вашей установки python, или есть какие-нибудь устаревшие файлы, которые вы должны удалить?

Ответы [ 11 ]

42 голосов
/ 31 декабря 2008

Это зависит от параметров, которые вы передаете install, и содержимого файлов конфигурации distutils в системе / в пакете. Я не верю, что какие-либо файлы изменяются вне каталогов, указанных этими способами.

Примечательно, что distutils не имеет команды удаления на данный момент.

Также следует отметить, что удаление пакета / яйца может вызвать проблемы с зависимостями & ndash; такие утилиты, как easy_install пытаются решить такие проблемы.

18 голосов
/ 31 декабря 2008

Устанавливаются три вещи, которые вам нужно будет удалить:

  1. Пакеты / модули
  2. Сценарии
  3. Файлы данных

Теперь в моей системе Linux они живут:

  1. / USR / Библиотека / python2.5 / сайт-пакеты
  2. / USR / бен
  3. / USR / акция

Но в системе Windows они, скорее всего, полностью находятся в каталоге дистрибутива Python. Я понятия не имею об OSX, за исключением того, что более вероятно следовать шаблону linux.

14 голосов
/ 12 декабря 2011

Другой взлом на основе отметки времени:

  1. Создать якорь: touch /tmp/ts
  2. Переустановите пакет для удаления: python setup.py install --prefix=<PREFIX>
  3. Удалить файлы, более поздние, чем файл привязки: find <PREFIX> -cnewer /tmp/ts | xargs rm -r
7 голосов
/ 01 января 2009

Да, безопасно просто удалить все, что установлено distutils. Это касается установленных папок или файлов .egg. Естественно, все, что зависит от этого кода, больше не будет работать.

Если вы хотите, чтобы это снова заработало, просто переустановите.

Кстати, если вы используете distutils, рассмотрите возможность использования функции нескольких версий. Это позволяет вам иметь несколько версий любого установленного пакета. Это означает, что вам не нужно удалять старую версию пакета, если вы просто хотите установить более новую версию.

4 голосов

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.

4 голосов
/ 01 августа 2012

В Ubuntu 12.04 я обнаружил, что единственное место, где вам нужно искать по умолчанию, находится под

/usr/local/lib/python2.7/

И просто удалите связанную папку и файл, если он есть!

4 голосов
/ 31 декабря 2008

Если это для целей тестирования и / или разработки, setuptools имеет команду velop , которая обновляется каждый раз, когда вы вносите изменения (поэтому вам не нужно удалять и переустанавливать каждый раз, когда вы вносите изменения). И вы также можете удалить пакет с помощью этой команды.

Если вы воспользуетесь этим, все, что вы объявите как скрипт , останется в виде файла с задержкой.

3 голосов
/ 27 мая 2017

для Python в Windows:

python -m pip uninstall "package_keyword"
uninstall **** (y/n)?
2 голосов
/ 24 декабря 2010

Для Windows 7,

Панель управления -> Программы -> Удалить

, затем

выберите пакет python для удаления.

2 голосов
/ 30 мая 2009

Я только что удалил пакет 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 @'") *

Я использую это все время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...