Istnieje --user
opcja dla pip, która może zainstalować pakiet Python na użytkownika:
pip install --user [python-package-name]
Skorzystałem z tej opcji, aby zainstalować pakiet na serwerze, do którego nie mam uprawnień roota. Teraz potrzebuję odinstalować zainstalowany pakiet na bieżącym użytkowniku. Próbowałem wykonać to polecenie:
pip uninstall --user [python-package-name]
Ale mam:
no such option: --user
Jak mogę odinstalować pakiet, który zainstalowałem pip install --user
, oprócz ręcznego znajdowania i usuwania pakietu?
Znalazłem ten artykuł
pip nie może odinstalować z katalogu pakietów witryny dla użytkownika
który opisuje, że odinstalowywanie pakietów z katalogu użytkownika nie jest obsługiwane. Zgodnie z artykułem, jeśli został poprawnie zaimplementowany, to za pomocą
pip uninstall [package-name]
zainstalowany pakiet zostanie przeszukany również w katalogach użytkowników. Ale wciąż pozostaje mi problem. Co jeśli ten sam pakiet został zainstalowany zarówno dla całego systemu, jak i dla jednego użytkownika? Co się stanie, jeśli ktoś będzie musiał kierować reklamy na określony katalog użytkowników?
źródło
--user
wówczas odinstalowanie bez--user
spowoduje zrobienie tego, co chcesz.Odpowiedzi:
Po przetestowaniu tego za pomocą Pythona 3.5 i pip 7.1.2 w systemie Linux wygląda na to, że:
pip install --user somepackage
instaluje się$HOME/.local
i odinstalowanie działa przy użyciupip uninstall somepackage
.Dzieje się tak niezależnie od tego, czy
somepackage
system jest instalowany jednocześnie w całym systemie.Jeśli pakiet jest zainstalowany w obu miejscach, tylko lokalny zostanie odinstalowany. Aby odinstalować pakiet w całym systemie
pip
, najpierw odinstaluj go lokalnie, a następnie ponownie uruchom tę samą komendę odinstalowania zroot
uprawnieniami.Oprócz wstępnie zdefiniowanego katalogu instalacyjnego użytkownika zainstaluje
pip install --target somedir somepackage
pakiet wsomedir
. Nie ma sposobu na odinstalowanie pakietu z takiego miejsca przy użyciupip
. (Ale na Github istnieje nieco stara, nie połączona prośba ściąganiapip uninstall --target
.)Ponieważ jedyne miejsca
pip
, z których kiedykolwiek odinstalujesz, to ogólnosystemowe i predefiniowane lokalne dla użytkownika, musisz uruchomićpip uninstall
jako odpowiedni użytkownik, aby odinstalować z lokalnego katalogu instalacyjnego danego użytkownika.źródło
jedi
zainstalowany pakiet systemowy/usr/lib64/python2.7/site-packages/
. Kiedy to robię, jako normalny użytkownik:pip install --user jedi
a następniepip uninstall jedi
pip próbuje odinstalować,/usr/lib64/python2.7/site-packages/jedi
a następnie uruchamia się przy pomocyPermission denied
. Więc jeśli--user
nie istnieje dla polecenia dezinstalacji, jak mam powiedzieć deinstalatorowi, aby nie próbował odinstalować,/usr/lib64/python2.7/site-packages/jedi
ale~/.local/lib64/python3.6/site-packages/jedi
?przykład odinstalowania pakietu „oauth2client” na MacOS:
źródło
Uważaj jednak na tych, którzy korzystają
pip install --user some_pkg
z wirtualnego środowiska .W takim przypadku musisz dezaktywować bieżące środowisko wirtualne , a następnie użyć odpowiedniego pliku
python
/pip
pliku wykonywalnego, aby wyświetlić listę lub odinstalować pakiety witryny użytkownika:Pamiętaj, że ten problem został zgłoszony kilka lat temu . I wydaje się, że obecny wniosek jest następujący:
--user
nie jest poprawny w wirtualnej środowiskupip
, ponieważ lokalizacja użytkownika tak naprawdę nie ma sensu w środowisku wirtualnym.źródło
--user
w wirtualnej env, czy jest jakiś sposób, aby to cofnąć ?, ponieważpip list
nie działa ....Myślę, że można odinstalować pakiety zainstalowane z
--user
flagą. Ten działał dla mnie;pip freeze --user | xargs pip uninstall -y
Dla python 3;
pip3 freeze --user | xargs pip3 uninstall -y
Ale w jakiś sposób te polecenia nie odinstalowują setuptools i pip. Po tych poleceniach (jeśli naprawdę chcesz wyczyścić Pythona) możesz je usunąć za pomocą;
pip uninstall setuptools && pip uninstall pip
źródło
Odpowiedź nie jest jeszcze możliwa . Musisz usunąć go ręcznie.
źródło
Jak wspomniał @ thomas-lotze, obecnie narzędzia do pipowania tego nie robią, ponieważ nie ma odpowiedniej opcji --user. Ale uważam, że mogę sprawdzić ~ / .local / bin i poszukać konkretnego pip #. #, Który wygląda na to, że odpowiada opcji --user.
W moim przypadku:
A następnie po prostu odinstaluj z określoną wersją pip.
źródło
./pip2 freeze | grep -v "^-e" | xargs pip uninstall -y
na wszystko oprócz pakietów zainstalowanych w trybie edytowalnymUżywam Anacondy w wersji 4.3.22 i środowiska python3.6.1 i miałem ten problem. Oto historia i poprawka:
Zrobiłem to w moim środowisku python3.6 i otrzymałem ten błąd.
Następnie próbowałem pobrać python3.6 i umieścić python3.dll w folderze i różnych folderach. nic się nie zmieniło.
w końcu to naprawiło:
(druga wersja conda-forge jest nadal zainstalowana) To pozostawiło tylko wersję conda i działa w wersji 3.6.
pracujący!
źródło