Jak usunąć pakiety zainstalowane za pomocą easy_install Pythona?

704

Python easy_installsprawia , że instalowanie nowych pakietów jest niezwykle wygodne. Jednak, o ile wiem, nie implementuje innych typowych funkcji menedżera zależności - wyświetlając i usuwając zainstalowane pakiety.

Jaki jest najlepszy sposób na sprawdzenie, co jest zainstalowane i jaki jest preferowany sposób usuwania zainstalowanych pakietów? Czy są jakieś pliki, które należy zaktualizować, jeśli ręcznie usunę pakiety (np. Przez rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.egglub podobne)?

ire_and_curses
źródło
67
ten post ma prawie 2 lata w chwili pisania tego komentarza. pip jest teraz skutecznie zamiennikiem easy_install i może poprawnie i czysto usuwać pakiety (w tym jaja) zainstalowane przez tę ostatnią. Pamiętaj, aby głosować na odpowiedź sugerującą ją w dalszej części wątku.
Michael Ekoka
53
Oksymoron, że coś, co nazywa się „easy_install” - nie jest: ma odpowiednika easy_uninstall, ani b: zawracał sobie głowę wspomnieniem, jak można to zrobić w --help- oszałamia mój umysł / _ denerwuje moją duszę / zasmuca moje serce .
Alex Gray
13
@ike co jeśli spróbuję odinstalować pip? (:
mccc

Odpowiedzi:

621

pip , alternatywa dla setuptools / easy_install, udostępnia polecenie „odinstaluj”.

Zainstaluj pip zgodnie z instrukcją instalacji :

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

Następnie możesz użyć pip uninstalldo usunięcia zainstalowanych pakietóweasy_install

księżycowy
źródło
25
jeśli masz problemy z odinstalowaniem modułów z pipem, upewnij się, że sama instalacja pipa jest aktualna: pip install -U pip # to wielka litera U
Michael Ekoka
4
pip pracował dla mnie, aby odinstalować zainstalowany pakiet easy_install. Musiałem jednak uruchomić „pip uninstall <package>” wiele razy, aby usunąć wszystkie wersje pakietu. Miej to na uwadze. Usunęło nawet zainstalowany pakiet „develop”, co w rezultacie było swego rodzaju bałaganem.
DragonFax,
2
Ale jak usunąć nieaktywny pakiet
CrazyGeek
7
Użyłem easy_install, aby zainstalować pip, aby odinstalować instalacje easy_install.
2
Odpowiedź mówi „zainstaluj pip”, ale tak naprawdę wydaje się, że pip jest wbudowany w nowoczesny Python .
Edward
188

Aby odinstalować .egg, potrzebujesz rm -rfjajka (może to być katalog) i usuń z niego pasującą linięsite-packages/easy-install.pth

współpracownik
źródło
18
Nowszy pipmenedżer pakietów zawiera funkcję odinstalowywania.
joeforker
Uważam, że pip lepiej niż odinstalowuje, ponieważ pip instaluje się ze źródeł. Jeśli lubisz mnie zupełnie nowy Win7 64bit, to uratuje ci dni :)
daitangio
6
Niektóre z zastosowań utknęły w starej wersji pipa, która nie ma opcji odinstalowywania, więc ta odpowiedź wciąż ma wartość.
Mark Pitchless,
5
Prawdopodobnie warto wspomnieć, że ta metoda może pozostawić zbłąkane data_filesi scripts(i ewentualnie inne kategorie plików) w systemie. Jajko EGG-INFO/SOURCES.txtzawiera listę wszystkich packageplików sources, ale nie takich data_files, które można zainstalować w dowolnym dowolnym katalogu w systemie ...
Alex Leach
pip nie zawsze usuwa wszystko, co instaluje easy_install. Oto małe doświadczenie, które właśnie mi się przydarzyło, gdy pip nie mógł odinstalować jednego z moich modułów. Musiałem usunąć pasującą linię z site-packages / easy-install.pth, aby całkowicie ją odinstalować.
ychaouche
158

Najpierw musisz uruchomić to polecenie:

$ easy_install -m [PACKAGE]

Usuwa wszystkie zależności pakietu.

Następnie usuń plik jaja tego pakietu:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg
PythonDev
źródło
1
więcej dokumentów tutaj: peak.telecommunity.com/DevCenter/…
GiDo
-mnie jest właściwą komendą easy_install do usuwania czegokolwiek, o ile mi wiadomo, ale ta odpowiedź podaje kluczową lokalizację pakietów easy_install, których nie dają inne odpowiedzi. rm -rf /usr/local/lib/python*wydaje mi się, że przed instalacją pip jest to droga
fuzzyTew
55

Wszystkie informacje znajdują się w innych odpowiedziach, ale żadna z nich nie streszcza obu twoich próśb ani nie sprawia, że ​​sprawy stają się niepotrzebnie złożone:

  • Do potrzeb związanych z usunięciem użyj:

    pip uninstall <package>

    (zainstaluj za pomocą easy_install pip)

  • Aby wyświetlić listę zainstalowanych pakietów, należy użyć:

    pip freeze

    Lub:

    yolk -l

    co może wygenerować więcej szczegółów pakietu.

    (Zainstaluj przez easy_install yolklub pip install yolk)

Rabarberski
źródło
Po uruchomieniu yolk -lwidzę, że mam zduplikowane pakiety, takie jak „scipy -0.11.0 -nieaktywny rozwój” i „scipy -0.14.0 ... aktywny rozwój”. Jak mogę odinstalować te nieaktywne pakiety programistyczne?
bobbyjoe93
2
Jest to dobre, z wyjątkiem tego, że chcę odinstalować pip, który został zainstalowany przez easy_install. Wynika to z faktu, że instalacja zakończyła się dla niewłaściwej wersji języka Python.
Nagev
28

Istnieje kilka źródeł w sieci sugerujących włamanie poprzez ponowną instalację pakietu z opcją -m, a następnie po prostu usunięcie pliku .egg z lib / i plików binarnych z bin /. Dyskusję na temat tego problemu z setuptools można również znaleźć w narzędziu do śledzenia błędów w Pythonie jako problem z 21 setuptools .

Edycja: Dodano link do narzędzia do śledzenia błędów w Pythonie.

c089
źródło
2
Dzięki za te informacje. Dla odniesienia innych, oto link do wspomnianego problemu: bugs.python.org/setuptools/issue21
ire_and_curses
25

Jeśli problem jest dla ciebie wystarczająco poważny, możesz rozważyć virtualenv . Pozwala ci stworzyć środowisko, które obuduje biblioteki Pythona. Pakiety instaluje się tam zamiast w globalnym katalogu pakietów witryny. Wszystkie skrypty uruchamiane w tym środowisku mają dostęp do tych pakietów (i opcjonalnie również do globalnych). Używam tego bardzo często podczas oceny pakietów, których nie jestem pewien, czy chcę / muszę zainstalować globalnie. Jeśli zdecydujesz, że nie potrzebujesz pakietu, łatwo jest zdmuchnąć to wirtualne środowisko. Jest dość łatwy w użyciu. Utwórz nową env:

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

virtual_envt instaluje dla Ciebie setuptools w nowym środowisku, dzięki czemu możesz:

$>ENV/bin/easy_install

Możesz nawet tworzyć własne skrypty boostrap, które konfigurują nowe środowisko. Tak więc, za pomocą jednego polecenia, możesz utworzyć nową wirtualną env z, powiedzmy, python 2.6, psycopg2 i django zainstalowanymi domyślnie (jeśli chcesz, możesz zainstalować wersję Pythona specyficzną dla env).

mazelife
źródło
Co to jest $>? Czy to podpowiedź? Może poprawienie na $ byłoby bardziej pomocne? Dzięki
Gray
18

Oficjalne (?) Instrukcje: http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Jeśli zastąpiłeś pakiet inną wersją, możesz po prostu usunąć niepotrzebne pakiety, usuwając plik lub katalog PackageName-versioninfo.egg (znaleziony w katalogu instalacyjnym).

Jeśli chcesz usunąć aktualnie zainstalowaną wersję pakietu (lub wszystkie wersje pakietu), najpierw uruchom:

easy_install -mxN PackageName

Zapewni to, że Python nie będzie kontynuował wyszukiwania pakietu, który planujesz usunąć. Po wykonaniu tej czynności możesz bezpiecznie usunąć pliki lub katalogi .egg wraz ze wszystkimi skryptami, które chcesz usunąć.

Mark Rajcok
źródło
Wydaje się, że niektóre rzeczy nigdy się nie zmieniają! PIP odmówił zainstalowania wtyczki TRAC hack (trac admin), działa tylko easy_install. Ale przypadkowo zainstalowałem starą wersję. I easy_install nie był w stanie naprawić tego z adresu URL https dla projektu. Więc użyłem PIP, aby go usunąć, ale po ponownej instalacji TRAC nie widzi wtyczki. Więc używam informacji tutaj, aby wyizolować pkg i ręcznie go usunąć, a następnie ponownie zainstalować. whew. (python 2.7)
Richard Cooke
15

próbować

$ easy_install -m [PACKAGE]

następnie

$ rm -rf .../python2.X/site-packages/[PACKAGE].egg
Jim Geovedi
źródło
1
Aby usunąć pakiet: $ easy_install -mxN PACKAGE następnie $ rm -rf .../lib/python2.X/site-packages/PACKAGE.egg (Patrz peak.telecommunity.com/DevCenter/... )
Vinicius José Latorre
7

Aby wyświetlić listę zainstalowanych pakietów Pythona, możesz użyć yolk -l. easy_install yolkNajpierw musisz jednak użyć .

Enis Afgan
źródło
6

Znalazłem się w tym pytaniu, próbując odinstalować wiele losowych pakietów Pythona zainstalowanych z czasem.

Korzystając z informacji z tego wątku, wymyśliłem:

cat package_list | xargs -n1 sudo pip uninstall -y

Został package_listwyczyszczony (awk) z pip freezepoziomu virtualenv.

Aby usunąć prawie wszystkie pakiety Pythona:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y
m0hit
źródło
<package_list xargs -n1 sudo pip uninstall -yunika UUOC!
Heini Høgnason
3

Ten sam problem napotkałem na moim MacOS X Leopard 10.6.blah.

Rozwiązaniem jest upewnienie się, że dzwonisz do Pythona MacPorts:

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

Mam nadzieję że to pomoże.

Cmag
źródło
1
Jednak całkowicie zmieniłem MacPorts na Brew, natywny Python 2.7 z Mac. MySQLdb zainstalowany przez setup_tools
Cmag
3

Dla mnie tylko usunięcie tego pliku: easy-install.pth działało, reszta pip install django == 1.3.7

Snehal Parmar
źródło
1

To zadziałało dla mnie. Jest podobny do poprzednich odpowiedzi, ale ścieżka do pakietów jest inna.

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

Plaform: MacOS High Sierra wersja 10.13.3

czerwony kogut
źródło
1
pierwsze polecenie powoduje dla mnie ten błąd:error: No urls, filenames, or requirements specified (see --help)
Michael