Jak zainstalować pakiet pip globalnie zamiast lokalnie?

101

Próbuję zainstalować pakiet flake8 za pomocą pip3 i wygląda na to, że odmawia instalacji, ponieważ jest już zainstalowany w jednej lokalnej lokalizacji.

Jak mogę wymusić globalną instalację (na poziomie systemu)?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

Zauważ, że wolałbym rozwiązanie ogólne (które powinno działać na Debianie, OS X może nawet Windows), takie, które powinno być używane na dowolnej platformie, więc nie chcę sam określać miejsca docelowego.

Z jakiegoś dziwnego powodu zachowuje się tak, jak już określiłem, --userczego w moim przypadku nie zrobiłem.

Jedynym sposobem, w jaki mogłem zainstalować pakiet globalnie, było najpierw jego usunięcie, a następnie ponowne zainstalowanie. W jakiś sposób wygląda na to, że pip (8.1.1) odmawia globalnej instalacji pakietu, jeśli istnieje on lokalnie.

Zastrzeżenie: żadne środowisko wirtualne nie zostało użyte ani uszkodzone podczas eksperymentów.

sorin
źródło
3
Czy próbowałeś od użytkownika root lub sudo?
matino
Czy próbowałeś pip install flake8 --upgrade?
Mauro Baraldi
W przypadku podobnych problemów związanych z korzystaniem ze środowisk wirtualnych (venv) użyj --system-site-packagesopcji dziedziczenia globalnie zainstalowanych pakietów do swojego venv. Zobacz stackoverflow.com/a/61326709/4445175
Wlad

Odpowiedzi:

144

Dlaczego nie spróbujesz sudoz Hflagą? To powinno załatwić sprawę.

sudo -H pip install flake8

Zwykły sudo pip install flake8spróbuje użyć twojego własnego katalogu domowego. -HInstruuje go użyć katalogu domowego systemu. Więcej informacji na https://stackoverflow.com/a/43623102/

nikhilweee
źródło
110
Hjak w Hlobal?
Matt
65
-Hjak w hej sudo, przestań używać mojego katalogu domowego. użyć własnego Hkatalogu ome zamiast stackoverflow.com/a/43623102
nikhilweee
7
To tak naprawdę nie instaluje go globalnie, ale zamiast tego wydaje się po prostu przechowywać go w katalogu domowym użytkownika
``
@nikhilweee Nie rozumiem, czym się to różni od pip3 install ipythondezaktywacji virtualenv, wydaje się, że instalują się w tym samym site-packageskatalogu.
iamfrancisyo
@parsecpython dla mnie załatwia sprawę i instaluje pakiety w /usr/local/lib/python3.8/dist-packages, gdzie chciałem
yota
8

Może --force-reinstallby zadziałało, w przeciwnym razie --ignore-installedpowinno załatwić sprawę.

Emma
źródło
4

Czy używasz virtualenv? Jeśli tak, dezaktywuj virtualenv. Jeśli nie używasz, jest już szeroko zainstalowany (na poziomie systemu). Spróbuj zaktualizować pakiet.

pip install flake8 --upgrade
Mauro Baraldi
źródło
3
Nie do końca prawda.
GMaster
2

Właściwie nie widzę twojego problemu. Globalnie to każdy pakiet, który znajduje się w folderze pakietu witryny ścieżki python3.

Jeśli chcesz używać go tylko lokalnie, musisz skonfigurować virtualenv i ponownie zainstalować pakiety z aktywowanym środowiskiem wirtualnym.

OŚWIETLONY
źródło
Podczas tworzenia pliku venv możesz --system-site-packages .venv/devdziedziczyć pakiety globalne, aby nie trzeba było ich ponownie instalować w każdym pliku venv. Ma to sens w przypadku pakietów, których można chcieć użyć w dowolnym projekcie, tj. Black, flake8, pytest. Przykład:python -m venv --system-site-packages .venv/dev
Wlad
0

Gdzie w Pythonie zachodzą instalacje pip?

Podam rozwiązanie dla okien, przed którym stanąłem i zajęło trochę czasu, aby rozwiązać.

Przede wszystkim w systemie Windows ( jako system operacyjny wezmę system Windows ), jeśli to zrobisz pip install <package_name>, zostanie on domyślnie zainstalowany globalnie ( jeśli nie aktywowałeś środowiska wirtualnego ). Gdy aktywujesz wirtualne środowisko i znajdziesz się w nim, wszystkie instalacje pip będą w tym wirtualnym środowisku.


pip instaluje wspomniane pakiety, ale nie mogę ich używać ?

W tym przypadku pip może dawać ostrzeżenie, że pliki wykonywalne pip, takie jak pip3.exe, pip.exenie znajdują się w zmiennej ścieżki. W tym celu możesz dodać tę ścieżkę (zwykle - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) do zmiennych środowiskowych . Po tym zrestartuj swój cmd, a teraz spróbuj użyć zainstalowanego pakietu Pythona. Teraz powinno działać.

uinstinct
źródło