Где pip устанавливает свои пакеты?

324

Я активировал virtualenv, на котором установлен pip. я сделал

pip3 install Django==1.8

и Django успешно загрузили. Теперь я хочу открыть папку Django. Где находится папка? Обычно это было бы в «загрузках», но я не уверен, где это было бы, если бы я установил его, используя pip в virtualenv.

user2719875
источник
1
Можно ли переопределить каталог для установки пакетов с помощью аргументов CLI, переменных среды или файла конфигурации?
Джон Каррелл

Ответы:

108

pip при использовании с virtualenv обычно устанавливает пакеты в путь <virtualenv_name>/lib/<python_ver>/site-packages.

Например, я создал тест virtualenv с именем venv_test с Python 2.7, и djangoпапка находится в venv_test/lib/python2.7/site-packages/django.

khampson
источник
1
Иногда вы можете не знать имя / путь virtualenv, например, при использовании с порожденными ресурсами Jupyterhub / binderhub. Я нашел способ № 1 работать здесь, когда pip showничего не делал. Вкратце, он состоит из ввода соответствующей консоли Python и ввода текста help("module_name"), где module_nameзаменяется фактическим именем модуля, которое вас интересует. Вы можете увидеть установленные модули help("modules")в консоли Python.
Уэйн
1
каким образом вы построили свой virtualenv? Я использую conda для создания своей виртуальной среды, в то время как pip3 не установил пакет в папку, которую вы упомянули
cloudcomputes
В то время (почти 4 года назад) я использовал virtualenv и Python 2.x. Сейчас я использую venv и Python 3.5.x. Я все еще нахожу ту же самую общую структуру папок. С Anaconda это особый дистрибутив, поэтому он может структурировать вещи по-другому, по крайней мере, частично.
Хэмпсон
584

По многочисленным просьбам, опция предоставляется посредством размещенного ответа:

pip show <package name>предоставит расположение для Windows и macOS, и я угадываю любую систему. :)

Например:

> pip show cvxopt
Name: cvxopt
Version: 1.2.0
...
Location: /usr/local/lib/python2.7/site-packages
gdbj
источник
15
На Mac это показало мне каталог с исходным кодом awscli, но без двоичного файла. : /
Кори Кляйн
8
Правильно, но чтобы полностью соответствовать заданному вопросу, это должно бытьpip3 show <package name>
Хорхе Торрес
1
Я использую Python 3.6 в Windows, и «pip» относится к pip для Python 3. Мне не нужно указывать «pip3».
FistOfFury
7
@CoryKlein Вместо того site-packages/, чтобы найти это в~/Library/Python/3.7/bin/
Мэтт Флетчер
2
Работает
47

pip list -vможет использоваться для просмотра списка мест установки пакетов, представленных в https://pip.pypa.io/en/stable/news/#b1-2018-03-31

Показывать места установки при запуске команды list с опцией «-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
...

Обновление : эта функция представлена ​​в pip10.0.0b1. На Ubuntu 18.04, pipили pip3установлен с sudo apt install python-pipили sudo apt install python3-pipявляется 9.0.1, который не имеет этой функции. Проверьте https://github.com/pypa/pip/issues/5599 для подходящих способов обновления pipили pip3.

jiasli
источник
4
К сожалению, это не работает на Ubuntu 18.04LTS
Sumanth Lazarus
3
Для меня это не показывает место установки (на Linux Mint 19.3)
Николай Вайткемпер
pipУстанавливается с помощью sudo apt install python-pipили sudo apt install python3-pipявляется 9.0.1. Проверьте github.com/pypa/pip/issues/5599 для подходящих способов обновления pipили pip3.
Jiasli
11

По умолчанию в Linux Pip устанавливает пакеты в /usr/local/lib/python2.7/dist-packages.

Использование virtualenv или --user во время установки изменит это расположение по умолчанию. Если вы используете, pip showубедитесь, что вы используете правильного пользователя, иначе pipможет не увидеть пакеты, на которые вы ссылаетесь.

CognizantApe
источник
7

В интерпретаторе или скрипте Python вы можете сделать

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

и

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

для местоположений установлены сторонние пакеты (те, которые не входят в основной дистрибутив Python).

На моем Brew-установленном Python на MacOS прежние выводы

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

который канонизирует к тому же пути pip show, указанному в предыдущем ответе:

$ 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

Ссылка: https://docs.python.org/3/library/site.html#site.getsitepackages

flow2k
источник