Gdzie pip instaluje swoje pakiety?

323

Aktywowałem virtualenv z zainstalowanym pipem. Zrobiłem

pip3 install Django==1.8

i Django zostało pomyślnie pobrane. Teraz chcę otworzyć folder Django. Gdzie znajduje się folder? Zwykle byłoby to w „pobraniu”, ale nie jestem pewien, gdzie by to było, gdybym zainstalował go za pomocą pipa w virtualenv.

użytkownik2719875
źródło
1
Czy katalog, w którym mają zostać zainstalowane pakiety, można zastąpić argumentami CLI, zmiennymi środowiskowymi lub plikiem konfiguracyjnym?
John Carrell,

Odpowiedzi:

108

pip, gdy jest używany z virtualenv , zazwyczaj instaluje pakiety na ścieżce <virtualenv_name>/lib/<python_ver>/site-packages.

Na przykład utworzyłem test virtualenv o nazwie venv_test w Pythonie 2.7, a djangofolder jest w folderze venv_test/lib/python2.7/site-packages/django.

Khampson
źródło
1
Czasami możesz nie znać nazwy / ścieżki virtualenv, na przykład korzystanie z zasobów spawnowanych Jupyterhub / binderhub. Znalazłem drogę nr 1 tutaj do pracy, gdy pip shownic nie zrobił. W skrócie, polega to na wpisaniu odpowiedniej konsoli python i wpisaniu help("module_name"), gdzie module_namejest ona zastąpiona rzeczywistą nazwą modułu, którą jesteś zainteresowany. Możesz zobaczyć zainstalowane moduły help("modules")w konsoli Pythona.
Wayne
1
w jaki sposób zbudowałeś virtualenv? Korzystam z conda, aby utworzyć środowisko wirtualne, podczas gdy pip3 nie zainstalował pakietu w folderze, o którym wspomniałeś
cloudscomputs
W tym czasie (prawie 4 lata temu) korzystałem z virtualenv i Python 2.x. Teraz używam venv i Python 3.5.x. Nadal jednak znajduję tę samą ogólną strukturę folderów. W przypadku Anakondy jest to wyselekcjonowany, wyraźny rozkład, więc może on różnie nadawać strukturę, przynajmniej częściowo.
khampson
583

Zgodnie z popularnym żądaniem opcja dostarczona za pośrednictwem opublikowanej odpowiedzi:

pip show <package name>poda lokalizację dla systemu Windows i macOS i domyślam się, że każdy system. :)

Na przykład:

> pip show cvxopt
Name: cvxopt
Version: 1.2.0
...
Location: /usr/local/lib/python2.7/site-packages
gdbj
źródło
15
Na Macu pokazał mi katalog z kodem źródłowym awscli, ale bez pliku binarnego. : /
Cory Klein,
8
Zgadza się, ale aby być w pełni zgodnym z zadanym pytaniem, powinno byćpip3 show <package name>
Jorge Torres
1
używam Pythona 3.6 w systemie Windows, a „pip” odnosi się do pip dla python 3. Nie muszę określać „pip3”.
FistOfFury,
7
@CoryKlein Zamiast site-packages/tego znalazłem to w~/Library/Python/3.7/bin/
Matt Fletcher
2
Bardzo dobrze działał na Ubuntu 18.04
Mohammed Baashar
47

pip list -vmoże być używany do wyświetlania listy lokalizacji instalacji pakietów, wprowadzonej w https://pip.pypa.io/en/stable/news/#b1-2018-03-31

Pokaż lokalizacje instalacji, gdy uruchomiono polecenie list z opcją „-v”. (# 979)

>pip list -v
Package                  Version   Location                                                             Installer
------------------------ --------- -------------------------------------------------------------------- ---------
alabaster                0.7.12    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
apipkg                   1.5       c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
argcomplete              1.10.3    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
astroid                  2.3.3     c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
...

Aktualizacja : Ta funkcja została wprowadzona w wersji pip10.0.0b1. W systemie Ubuntu 18.04 piplub pip3w wersji 9.0.1 sudo apt install python-piplub sudo apt install python3-pipnowszej, która nie ma tej funkcji. Sprawdź https://github.com/pypa/pip/issues/5599 dla odpowiednich sposobów aktualizacji piplub pip3.

jiasli
źródło
4
Niestety nie działa to w systemie Ubuntu 18.04LTS
Sumanth Lazarus
3
Dla mnie nie pokazuje miejsca instalacji (w Linux Mint 19.3)
Nicolai Weitkemper
The pipZainstalowane przy użyciu sudo apt install python-piplub sudo apt install python3-pipjest 9.0.1. Sprawdź github.com/pypa/pip/issues/5599, aby znaleźć odpowiednie sposoby aktualizacji piplub pip3.
jiasli
11

Domyślnie, w Linuksie, Pip instaluje pakiety w /usr/local/lib/python2.7/dist-packages.

Użycie virtualenv lub --user podczas instalacji zmieni tę domyślną lokalizację. Jeśli używasz, pip showupewnij się, że korzystasz z odpowiedniego użytkownika, w przeciwnym razie pipmożesz nie widzieć pakietów, do których się odwołujesz.

CognizantApe
źródło
7

Możesz to zrobić za pomocą interpretera lub skryptu w języku Python

import site
site.getsitepackages() # list of global package locations

i

site.getusersitepackages() #string for user-specific package location

dla lokalizacji instalowane są pakiety innych firm (nie znajdujące się w podstawowej dystrybucji Pythona).

W moim Pythonie zainstalowanym w systemie Brew na MacOS, poprzednie wyniki

['/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'],

który kanonizuje do tej samej ścieżki wyjściowej pip show, jak wspomniano w poprzedniej odpowiedzi:

$ readlink -f /usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
/usr/local/lib/python3.7/site-packages

Odniesienie: https://docs.python.org/3/library/site.html#site.getsitepackages

flow2k
źródło