Як видалити пакунки, встановлені за допомогою easy_install Python?


704

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

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


67
цій публікації майже 2 роки, коли я пишу цей коментар. pip тепер фактично є заміною для easy_install і може правильно та чисто видаляти пакунки (яйця в комплекті), встановлені останніми. Будь ласка, переконайтесь, що ви підтвердили відповідь, пропонуючи її далі внизу.
Майкл Екока

53
Оксиморон, що щось називається "easy_install" - не має: не має колеги easy_uninstall, ні b: не турбуйся згадувати, як це можна зробити в --help-, кидає мій погляд / _інфуріє мою душу / засмучує моє серце .
Алекс Грей

13
@mike Що робити, якщо я намагаюся видалити pip? (:
mccc

Відповіді:


621

pip , альтернатива setuptools / easy_install, забезпечує команду "видалити".

Встановіть pip відповідно до інструкції з установки :

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

Потім ви можете використовувати pip uninstallдля видалення пакунків, встановлених за допомогоюeasy_install


25
якщо у вас виникають проблеми з видаленням модулів з pip, переконайтесь, що сама установка
файлів оновлена

4
pip працював у мене для видалення встановленого пакета easy_install. Мені довелося кілька разів запускати 'pip uninstall <package>', щоб видалити всі версії пакету. Тож майте це на увазі. Він навіть видалив встановлений пакет «розробити», який в результаті був безлад.
DragonFax

2
Але як би ви видалили неактивний пакет
CrazyGeek

7
Я використовував easy_install для встановлення pip для видалення встановлення easy_install.

2
Відповідь говорить "встановити pip", але насправді pip, здається, вбудований в сучасний Python .
Едвард

188

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


18
Новий pipменеджер пакунків включає функцію видалення.
joeforker

Я вважаю, що pip краще, ніж видалити, оскільки встановити pip з джерел. Якщо вам сподобався абсолютно новий Win7 64bit, це заощадить ваші дні :)
daitangio

6
Деякі з користей застрягли зі старою версією pip, яка не має можливості для видалення, тому ця відповідь все ще має значення.
Позначити Pitchless

5
Напевно, варто згадати, що цей метод може залишити бродячу data_filesта scripts(і, можливо, інші категорії файлів) у системі. Яйце EGG-INFO/SOURCES.txtмістить список усіх packageфайлів sources, але їх немає data_files, які можна встановити у будь-який довільний каталог вашої системи ...
Alex Leach

pip не завжди видаляє все, що встановлюється easy_install. Ось невеликий досвід, який щойно трапився зі мною, коли pip не зміг видалити один із моїх модулів. Мені довелося видалити відповідний рядок із сайту-пакети / easy-install.pth, щоб повністю його видалити.
ychaouche

158

Спочатку потрібно виконати цю команду:

$ easy_install -m [PACKAGE]

Це усуває всі залежності пакету.

Потім видаліть файл яйця з цього пакету:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg

1
більше doc тут: peak.telecommunity.com/DevCenter/…
GiDo

-mце не належна команда easy_install, щоб видалити що-небудь, наскільки я можу сказати, але ця відповідь дає вирішальне розташування пакетів easy_install, на які інші відповіді не відповідають. rm -rf /usr/local/lib/python*перед установкою ПГИ шлях мені здається
fuzzyTew

55

Уся інформація знаходиться в інших відповідях, але жодна не резюмує обидва ваші запити або, здається, робить непотрібними речі:

  • Для видалення потрібно використовувати:

    pip uninstall <package>

    (встановити за допомогою easy_install pip)

  • Для вашого списку встановлених пакетів потрібно або скористатися:

    pip freeze

    Або:

    yolk -l

    який може вивести більше деталей пакета.

    (Встановити через easy_install yolkабо pip install yolk)


Після запуску 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.


2
Дякую за цю інформацію Для довідок інших, ось посилання на проблему, про яку ви згадали: bugs.python.org/setuptools/issue21
ire_and_curses

25

Якщо проблема викликає досить серйозне роздратування, ви можете розглянути можливість virtualenv . Це дозволяє створити середовище, яке інкапсулює бібліотеки пітона. Ви встановлюєте пакунки там, а не в глобальному каталозі пакунків. Будь-які сценарії, які ви запускаєте в цьому середовищі, мають доступ до цих пакетів (і необов'язково, до ваших глобальних). Я дуже використовую це під час оцінювання пакетів, які не впевнені, що хочу / потрібно встановити глобально. Якщо ви вирішите, що вам не потрібен пакет, досить просто просто зняти це віртуальне середовище. Це досить просто у використанні. Створіть нове оточення:

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

virtual_envt встановлює для вас setuptools у новому середовищі, тож ви можете:

$>ENV/bin/easy_install

Ви навіть можете створити власні сценарії завантаження, які налаштовують ваше нове середовище. Отже, за допомогою однієї команди ви можете створити нову віртуальну env, скажімо, з python 2.6, psycopg2 та django, встановленими за замовчуванням (ви можете встановити специфічну для env версію python, якщо хочете).


Що таке $>? Це підказка? Можливо коригування до $ було б кориснішим? Спасибі
Сірий

19

Офіційні (?) Інструкції: http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Якщо ви замінили пакунок на іншу версію, ви можете просто видалити пакет (и), який вам не потрібен, видаливши файл або каталог PackageName-versioninfo.egg (знайдений у каталозі встановлення).

Якщо ви хочете видалити наразі встановлену версію пакета (або всі версії пакета), спершу слід запустити:

easy_install -mxN PackageName

Це дозволить Python не продовжувати шукати пакет, який ви плануєте видалити. Після цього ви можете безпечно видалити .egg файли чи каталоги разом із будь-якими скриптами, які ви хочете видалити.


Деякі речі ніколи не змінюються, здається! PIP відмовився встановлювати плагін TRAC hack (trac admin), працює тільки easy_install. Але я випадково встановив стару версію. І easy_install не зміг виправити це з URL-адреси https для проекту. Тому я використовував PIP для його видалення, але після перевстановлення TRAC не бачить плагін. Тому я використовую тут інформацію, щоб ізолювати pkg та видалити його вручну, а потім повторно встановити. коли. (python 2.7)
Річард Кук


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

<package_list xargs -n1 sudo pip uninstall -yуникає УУПЦ!
Heini Høgnason

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

Сподіваюсь, це допомагає.


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)
Майкл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.