Jak odinstalować edytowalne pakiety za pomocą pip (zainstalowane za pomocą -e)

107

Zainstalowałem kilka pakietów z -e

> pip install -e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev

Widzę, że z pip Freeze

> pip freeze
...
-e git+https://github.com/eventray/horus.git@2ce62c802ef5237be1c6b1a91dbf115ec284a619#egg=horus-dev
...

kiedy próbuję odinstalować pakiety, otrzymuję błędy:

> pip uninstall horus-dev
Cannot uninstall requirement horus-dev, not installed

> pip uninstall horus
Cannot uninstall requirement horus, not installed

Jak odinstalować taki pakiet?

Michael_Scharf
źródło
pip uninstall <package> odinstalowuje pakiety zainstalowane w trybie edytowalnym w ostatnich wersjach pip (moja to 19.1.1). Upewnij się, że używasz nazwy pakietu w setup.py, a nie aliasu, który podałeś, aby wywołać ten pakiet w entry_points
picmate 涅
dla osób używających conda, aby odinstalować w trybie deweloperskim w conda, wykonaj:conda develop -u .
Charlie Parker
Czy wiesz, dlaczego pip uninstall yourpackagenie zadziałało? Na przykład, co oznaczają twoje błędy? Wydaje się dziwne wyjście z polecenia ...
Charlie Parker
Czy próbowałeś pip uninstall -e .czy python setup.py develop -u?
Charlie Parker
2
U mnie pip uninstall librarydziałało dobrze. Jeśli przejdziesz do odpowiedzi podanej przez OP, wydaje się, że jest to coś dziwnego w jego bibliotece, która została uszkodzona. Miejmy nadzieję, że zaoszczędzi to ludziom czasu, gdy przybędą tutaj następnym razem. Chociaż istnieje wiele różnych opcji, które mogą działać.
Charlie Parker

Odpowiedzi:

90

At {virtualenv}/lib/python2.7/site-packages/(jeśli nie używasz virtualenv to {system_dir}/lib/python2.7/dist-packages/)

  • usuń plik jajka (np. distribute-0.6.34-py2.7.egg), jeśli taki istnieje
  • z pliku easy-install.pthusuń odpowiednią linię (powinna to być ścieżka do katalogu źródłowego lub pliku jajka).
glarrain
źródło
43
Co za niespodzianka, nie ma na to odpowiedniego sposobu odinstalowania.
Drake Guan
4
@Drake tak, właściwie dość denerwujące
glarrain
4
W obecnej wersji pip deinstalacja działa dobrze również dla pakietów zainstalowanych z -eopcją.
Famousgarkin
9
dla mnie używam 8.1.2, pip uninstall package_namedziała, ale pip uninstall .nie działa
zdezorientowany00
5
Występuje tu otwarty problem dotyczący narzędzia pip , dotyczący możliwości usuwania pakietów zainstalowanych w edycji.
Chris Hunt
22

Łatwiejszym sposobem na zrobienie tego samego w nowej wersji setup_tools jest uruchomienie następujących elementów:

python setup.py develop -u

Co w zasadzie robi to samo, co @glarrain opisuje w swojej odpowiedzi.

Ahmed Shariff
źródło
2
czy ma być jakieś wyjście dla tego polecenia? Rozumiem, że to mówi, running developale nadal mam .egg-infoplik ... czy to ma go usunąć?
Pinokio
Jaka jest „nowa wersja setup_tools”, dla której ta odpowiedź działa? Czy możesz to potwierdzić?
Charlie Parker
Czy Twoja odpowiedź gwarantuje, że nie trzeba usuwać cienkich ręcznie?
Charlie Parker
Nie wytwarza żadnych wyników. Zgodnie z moim rozumieniem powinno to usunąć: "--uninstall, -u Odinstaluj bieżący projekt. Możesz użyć opcji --install-dir lub -d do wyznaczenia obszaru przemieszczania. Utworzony plik .egg-link będzie być usunięty, jeśli jest obecny i nadal wskazuje katalog projektu. " z dokumentacji setuptools . Czy po uruchomieniu nadal ładuje zawartość z katalogu deweloperskiego?
Ahmed Shariff
@CharlieParker Nie jestem pewien, w której wersji to zostało wprowadzone. Nigdy nie musiałem ręcznie usuwać tych plików.
Ahmed Shariff
10

Zainstaluj pakiet deweloperski, użyj cmd:

pip install --editable .

Odinstaluj:

rm -r $(find . -name '*.egg-info')

Teraz możesz użyć:

pip uninstall package_name 

lub python setup.py develop --uninstalllubpython setup.py develop -u

Legolas Bloom
źródło
4
Czy możesz określić, skąd uruchamiasz to drugie polecenie?
ethanabrooks
1
@ethanabrooks .to katalog bieżący, używasz pełnej ścieżki bezwzględnej pakietu.
Legolas Bloom
1
Niekompletny. A co ze wszystkimi pakietami Pythona? ( site-packagesreż)
Jorge Orpinel
Nie powoduje to całkowitego cofnięcia instalacji. Usuwa rzeczy z folderu, z którego został zainstalowany pakiet, ale nie usuwa dowiązania symbolicznego w twoim dist-packageskatalogu (gdzie Python szuka zainstalowanego pakietu). Środek czyszczący w użyciu python setup.py develop -u.
Mark Amery
@MarkAmery Dzięki, pip uninstall package_namepracuj teraz.
Legolas Bloom
6

Jest to błąd występujący w systemie debian / ubuntu linux używającym pip zainstalowanego w systemie operacyjnym (dla mnie v8.1.1), z którego będziesz korzystać, sudo pipnawet jeśli zaktualizowałeś pip (np. Get-pip.py). Zobacz https://github.com/pypa/pip/issues/4438

Aby zapoznać się z dyskusją na temat czyszczenia, zobacz /ubuntu/173323/how-do-i-detect-and-remove-python-packages-installed-via-pip , chociaż dostępne są rozwiązania odmiana „usuń wszystko”.

... pakiety pip [idź] do /usr/local/lib/python2.7/dist-packagesi pakiety apt do/usr/lib/python2.7/dist-packages

... kilka pakietów też zostało zainstalowanych ~/.local/lib.

W moim systemie wszystko, co musiałem usunąć, to /usr/local/lib/python2.7/dist-packages/{package_name}.egg-link

Matt Wilkie
źródło
U mnie pip uninstall librarydziałało dobrze. Jeśli przejdziesz do odpowiedzi podanej przez OP, wydaje się, że jest to coś dziwnego w jego bibliotece, która została uszkodzona. Miejmy nadzieję, że zaoszczędzi to ludziom czasu, gdy przybędą tutaj następnym razem. Chociaż istnieje wiele różnych opcji, które mogą działać
Charlie Parker
5

Okazuje się, że moja instalacja była w jakiś sposób uszkodzona.

Mogłem znaleźć wpis w:

/usr/local/lib/python2.7/site-packages/easy-install.pth

Aby rozwiązać ten problem, ręcznie usunąłem linię z pliku .pth!

import sys; sys.__plen = len(sys.path)
...
/absolute-path-to/horus  # <- I removed this line
...
Michael_Scharf
źródło
1
Co to znaczy, że Twoja instalacja była uszkodzona?
Charlie Parker
-1

Po prostu odinstaluj pakiet, który zainstalowałeś w trybie „edytowalnym”:

pip uninstall yourpackage
Bezskrzydły ptak
źródło
9
OP próbował tego i mówi to w swoim pytaniu. To niekoniecznie działa z pakietami zainstalowanymi jako „edytowalne”
dusktreader
2
@dusktreader: Nie jestem pewien, co się dzieje z pip uninstallpoleceniem OP (może nieaktualna wersja pip?), ale sprawdziłem, że w normalnych okolicznościach robi dokładnie to, co zostało zasugerowane ręcznie w zaakceptowanej odpowiedzi przez @glarrain. Jeśli to nie działa, opisz szczegółowo, co tutaj robisz, abyśmy mogli dalej zgłębić problem.
Apteryx
@Apteryx czekaj, mówisz, że działa nawet w trybie edycji?
Charlie Parker
Ta odpowiedź zadziałała dla mnie. Myślę, że to nie zadziałało w przypadku OP, ponieważ jeśli sprawdzisz jego odpowiedź, miał jakąś dziwną, uszkodzoną instalację (lub jego komputer był w dziwnym stanie). pip uninstall pkgdziała afaik.
Charlie Parker