Как удалить пакеты, установленные с помощью Python easy_install? - PullRequest
680 голосов
/ 05 августа 2009

Python's easy_install делает установку новых пакетов чрезвычайно удобной. Однако, насколько я могу судить, он не реализует другие общие функции менеджера зависимостей - перечисление и удаление установленных пакетов.

Каков наилучший способ узнать, что установлено, и каков предпочтительный способ удаления установленных пакетов? Существуют ли какие-либо файлы, которые необходимо обновить, если я удаляю пакеты вручную (например, по rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.egg или аналогичным)?

Ответы [ 13 ]

611 голосов
/ 21 июля 2010

pip , альтернатива setuptools / easy_install, предоставляет команду «удалить».

Установка пипса в соответствии с инструкциями по установке :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Затем вы можете использовать pip uninstall для удаления пакетов, установленных с easy_install

185 голосов
/ 05 августа 2009

Чтобы удалить .egg, вам нужно rm -rf яйцо (это может быть каталог) и удалить соответствующую строку из site-packages/easy-install.pth

157 голосов
/ 07 июня 2011

Сначала вы должны выполнить эту команду:

$ easy_install -m [PACKAGE]

Удаляет все зависимости пакета.

Затем удалите файл egg этого пакета:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
55 голосов
/ 04 января 2012

Вся информация содержится в других ответах, но ни один не суммирует оба ваших запросов или, кажется, делает вещи излишне сложными:

  • Для удаления необходимо использовать:

    pip uninstall <package>
    

    (установка с использованием easy_install pip)

  • Для «списка установленных пакетов» необходимо либо:

    pip freeze
    

    Или:

    yolk -l
    

    , который может выводить больше деталей пакета.

    (установка через easy_install yolk или pip install yolk)

28 голосов
/ 05 августа 2009

В сети есть несколько источников, предлагающих взломать, переустановив пакет с параметром -m, а затем просто удалив файл .egg в lib / и двоичные файлы в bin /. Кроме того, обсуждение этой проблемы setuptools можно найти на трекере ошибок Python как setuptools issue 21 .

Редактировать: добавлена ​​ссылка на багтрекер Python.

25 голосов
/ 05 августа 2009

Если проблема достаточно серьезная для вас, вы можете подумать virtualenv . Это позволяет вам создавать среду, которая инкапсулирует библиотеки Python. Вы устанавливаете пакеты там, а не в глобальном каталоге site-packages. Любые скрипты, которые вы запускаете в этой среде, имеют доступ к этим пакетам (и, опционально, к вашим глобальным). Я часто использую это при оценке пакетов, которые я не уверен, что хочу / нужно устанавливать глобально. Если вы решите, что вам не нужен пакет, достаточно просто удалить эту виртуальную среду. Это довольно легко использовать. Сделайте новый env:

$>virtualenv /path/to/your/new/ENV

virtual_envt устанавливает setuptools для вас в новой среде, поэтому вы можете сделать:

$>ENV/bin/easy_install

Вы даже можете создавать свои собственные сценарии boostrap, которые настраивают вашу новую среду. Итак, с помощью одной команды вы можете создать новый виртуальный env с, скажем, python 2.6, psycopg2 и django, установленными по умолчанию (вы можете установить env-версию python, если хотите).

18 голосов
/ 11 августа 2010

Официальные (?) Инструкции: http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Если вы заменили пакет другой версией, вы можете просто удалить ненужные пакеты, удалив PackageName-versioninfo.egg файл или каталог (находится в каталоге установки).

Если вы хотите удалить установленную на данный момент версию пакета (или все версии пакета), сначала необходимо выполнить:

easy_install -mxN PackageName

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

15 голосов
/ 21 июля 2010

1001 * попробовать *

$ easy_install -m [PACKAGE]

тогда

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
7 голосов
/ 01 декабря 2010

Для просмотра списка установленных пакетов Python вы можете использовать yolk -l. Сначала вам нужно будет использовать easy_install yolk.

6 голосов
/ 01 декабря 2010

Наткнулся на этот вопрос, пытаясь удалить множество случайных пакетов Python, установленных со временем.

Используя информацию из этой темы, вот что я придумал:

cat package_list | xargs -n1 sudo pip uninstall -y

package_list очищается (awk) от pip freeze в виртуальности.

Чтобы удалить почти все пакеты Python:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y
...