Как удалить пакеты, установленные с помощью Python easy_install?

704

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

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

ire_and_curses
источник
67
этому посту уже почти 2 года, когда я пишу этот комментарий. pip теперь эффективно заменяет easy_install и может правильно и аккуратно удалять пакеты (включая яйца), установленные последними. Пожалуйста, убедитесь, что вы проголосовали за ответ, предлагая его дальше вниз по ветке.
Майкл Экока
53
Оксюморон , что - то называется «easy_install» - не а: есть аналог easy_uninstall, ни б: удосужилось упомянуть , как один может сделать это в --help- испуг моего разума / _infuriates моей души / печалит мое сердце .
Алекс Грей,
13
@mike, что если я пытаюсь удалить pip? (:
MCCC

Ответы:

621

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

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

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

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

lunaryorn
источник
25
если у вас возникают проблемы при удалении модулей с помощью pip, убедитесь, что сама установка pip обновлена: pip install -U pip # это прописная буква U
Michael Ekoka
4
pip помог мне удалить установленный пакет easy_install. Однако мне пришлось запускать pip uninstall <package> несколько раз, чтобы удалить все версии пакета. Так что имейте это в виду. Он даже удалил установленный пакет 'Develop', что в результате привело к путанице.
DragonFax
2
Но как бы вы
удалили
7
Я использовал easy_install для установки pip для удаления установок easy_install.
2
Ответ гласит: «установить pip», но на самом деле pip, похоже, встроен в современный Python .
Эдвард
188

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

joeforker
источник
18
Более новый pipменеджер пакетов включает функцию удаления.
Joeforker
Я считаю, что pip лучше, чем удалить, потому что pip устанавливается из исходников. Если у вас есть, как я, новая Win7 64bit, это спасет ваши дни :)
daitangio
6
Некоторые из них используют старую версию pip, у которой нет опции удаления, поэтому этот ответ все еще имеет смысл.
Марк Питчлесс
5
Вероятно, стоит упомянуть, что этот метод может оставить в системе блуждающие data_filesи scripts(и, возможно, другие категории файлов). Яйцо EGG-INFO/SOURCES.txtсодержит список всех packageфайлов и sources, но не data_files, которые могут быть установлены в любой произвольный каталог в вашей системе ...
Алекс Лич
pip не всегда удаляет все, что устанавливает easy_install. Вот небольшой опыт, который произошел со мной, когда pip не смог удалить один из моих модулей. Мне пришлось удалить соответствующую строку из site-packages / easy-install.pth, чтобы полностью удалить ее.
ychaouche
158

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

$ easy_install -m [PACKAGE]

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

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

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
PythonDev
источник
1
больше документации здесь: peak.telecommunity.com/DevCenter/…
GiDo
-mНасколько я могу судить, неправильная команда easy_install не удаляет что-либо, но этот ответ дает принципиальное расположение пакетов easy_install, чего нет в других ответах. rm -rf /usr/local/lib/python*мне кажется, что до установки pip это путь
fuzzyTew
55

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

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

    pip uninstall <package>

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

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

    pip freeze

    Или:

    yolk -l

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

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

Rabarberski
источник
После запуска yolk -lя вижу дубликаты пакетов, такие как «scipy -0.11.0 -неактивная разработка» и «scipy -0.14.0 ... -активная разработка». Как я могу удалить эти неактивные пакеты разработки?
bobbyjoe93
2
Это хорошо, за исключением того, что я хочу удалить pip, который был установлен easy_install. Это потому, что в итоге он установил его для неправильной версии Python.
Нагев
28

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

Изменить: Добавлена ​​ссылка на багтрекер Python.

c089
источник
2
Спасибо за эту информацию. Для справки, вот ссылка на проблему, которую вы упомянули: bugs.python.org/setuptools/issue21
ire_and_curses
25

Если проблема достаточно серьезна для вас, вы можете подумать о 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, если хотите).

mazelife
источник
Что такое $>? Это приглашение? Может быть, исправление $ будет более полезным? Спасибо
Серый
19

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

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

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

easy_install -mxN PackageName

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

Марк Райкок
источник
Кажется, некоторые вещи никогда не меняются! PIP отказался установить плагин для взлома TRAC (trac admin), работает только easy_install. Но я случайно установил старую версию. И easy_install не смог исправить это из URL-адреса https для проекта. Поэтому я использовал PIP для его удаления, но после переустановки TRAC не видит плагин. Поэтому я использую информацию здесь, чтобы изолировать pkg и вручную удалить его, а затем переустановить. гмм. (Python 2.7)
Ричард Кук
15

пытаться

$ easy_install -m [PACKAGE]

тогда

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
Джим Джоведи
источник
1
Чтобы удалить пакет: $ easy_install -mxN PACKAGE затем $ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg (См. Peak.telecommunity.com/DevCenter/… )
Виниций Хосе Латорре
7

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

Энис Афган
источник
6

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

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

cat package_list | xargs -n1 sudo pip uninstall -y

package_listОчищается (AWK) изpip freeze в virtualenv.

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

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y
m0hit
источник
<package_list xargs -n1 sudo pip uninstall -yизбегает UUOC!
Хейни Хогнасон
3

Я столкнулся с той же проблемой на моем MacOS X Leopard 10.6.blah.

Решение состоит в том, чтобы убедиться, что вы вызываете MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

Надеюсь это поможет.

Cmag
источник
1
Тем не менее, я полностью перешел с MacPorts на Brew, родной python 2.7 от Mac. MySQLdb установлен через setup_tools
Cmag
3

Для меня только удаление этого файла: easy-install.pth сработал, остальные pip install django == 1.3.7

Снехал Пармар
источник
1

Это сработало для меня. Это похоже на предыдущие ответы, но путь к пакетам отличается.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Платформа: MacOS High Sierra версия 10.13.3

Красный петух
источник
1
Первая команда выдает для меня эту ошибку:error: No urls, filenames, or requirements specified (see --help)
Майкл