2015-10-29 15 views
60

Jest --user rozwiązaniem dla pip, który można zainstalować pakiet Python na użytkownika:Jak odinstalować pakiet zainstalowany z pip zainstalować --user

pip install --user [python-package-name] 

użyłem tej opcji, aby zainstalować pakiet na serwerze w które nie mam dostępu root. Teraz potrzebuję odinstalować zainstalowany pakiet na bieżącym użytkowniku. Starałem się wykonać to polecenie:

pip uninstall --user [python-package-name] 

Ale mam:

no such option: --user 

Jak mogę odinstalować pakiet, który mam zainstalowany z pip install --user, inne niż ręczne wyszukiwanie i usuwanie pakietu?

Znalazłem ten artykuł

pip cannot uninstall from per-user site-packages directory

który opisuje, że deinstalacja pakietów z katalogu użytkownika nie obsługiwane. Zgodnie z artykułem, jeśli został poprawnie zaimplementowany, to z

pip uninstall [package-name] 

pakiet, który został zainstalowany, będzie również przeszukiwany w katalogach użytkowników. Ale problem nadal pozostaje dla mnie. Co się stanie, jeśli ten sam pakiet został zainstalowany zarówno w systemie, jak i na użytkownika? Co zrobić, jeśli ktoś musi kierować reklamy na konkretny katalog użytkowników?

+1

Nie, musisz ustawić jeden virtualenv na użytkownika: group i dać odpowiednie uprawnienia systemowe do folderu zawierającego go. – danigosa

+3

Nie ma sposobu, aby zainstalować pakiet dla całego systemu dla wszystkich użytkowników, a następnie selektywnie odinstalować go dla niektórych użytkowników. Jeśli pakiet został zainstalowany jako '--user', to odinstalowanie bez' --user' spowoduje, że zrobisz to, co chcesz. – tripleee

+0

@tripleee: Nie mam systemu uprawnień szeroki i nie chcę, po prostu trzeba go odinstalować na bieżącego użytkownika – Serjik

Odpowiedz

51

Po przetestowaniu tego przy użyciu Pythona 3.5 i pip 7.1.2 w systemie Linux, sytuacja wydaje się być to:

  • pip install --user somepackage instaluje się $HOME/.local i odinstalowywanie to działa przy użyciu pip uninstall somepackage.

  • Jest to prawdą, niezależnie od tego, czy somepackage czy też nie jest zainstalowany jednocześnie w całym systemie.

  • Jeśli pakiet jest zainstalowany w obu miejscach, tylko lokalny zostanie odinstalowany. Aby zdeinstalować pakiet w całym systemie przy użyciu pip, najpierw należy go odinstalować lokalnie, a następnie ponownie uruchomić to samo polecenie deinstalacji, z uprawnieniami root.

  • Oprócz wstępnie zdefiniowanego katalogu instalacyjnego użytkownika, pip install --target somedir somepackage zainstaluje pakiet w somedir. Nie ma sposobu, aby odinstalować pakiet z takiego miejsca za pomocą pip. (Ale jest nieco stary prośba niescalone pociągnięcie Github który implementuje pip uninstall --target.)

  • Ponieważ niewielu miejsc pip nigdy Odinstaluj są w całym systemie i predefiniowany użytkownik lokalny, trzeba uruchomić pip uninstall jako danego użytkownika odinstalować z lokalnego katalogu instalacyjnego danego użytkownika.

3

Odpowiedź jest Niemożliwe jeszcze. Musisz usunąć go ręcznie.

+2

co jest konieczne, aby usunąć je ręcznie? – Daniel

+0

Podczas instalowania pakietu istniał traceback. Odinstalowanie nigdy nie działało po tym. – syam

10

przykład odinstalować pakiet 'oauth2client' na MacOS:

pip uninstall oauth2client 
0

Jako @ Thomas-Lotze wspomniał, obecnie pip oprzyrządowanie nie robi, że nie, ponieważ istnieje odpowiadający --user opcję. Ale znajduję to, że mogę sprawdzić ~/.local/bin i poszukać konkretnego pip #., Który wygląda na podobny do -user.

W moim przypadku:

[email protected]  ~/.l/bin  pwd 
/home/antho/.local/bin 
[email protected]  ~/.l/bin  ls pip* 
pip pip2 pip2.7 pip3 pip3.5 

A potem po prostu odinstalować z konkretnej wersji PIP.

Powiązane problemy