Без виртуальных сред
pip <command> --user
изменяет область действия текущей команды pip для работы с локальным местоположением установки пакета Python текущей учетной записи пользователя, а не с общесистемным местоположением установки пакета, которое используется по умолчанию.
- См. Установка пользователя в Руководстве пользователя PIP.
Это действительно имеет значение только на многопользовательской машине. Все, что установлено в системном расположении, будет видно всем пользователям, поэтому установка в пользовательское местоположение будет держать установку этого пакета отдельно от других пользователей (они не будут видеть его, и для его использования придется установить его отдельно). Поскольку могут быть конфликты версий, установка пакета с зависимостями, необходимыми для других пакетов, может вызвать проблемы, поэтому лучше не помещать все пакеты, которые использует данный пользователь, в место установки системы.
- Если это однопользовательский компьютер, нет никакой разницы в установке на
--user
месте. Он будет установлен в другую папку, которую может или не нужно добавлять в путь, в зависимости от пакета и способа его использования (многие пакеты устанавливают средства командной строки, которые должны находиться на пути для запуска из оболочки) ,
- Если это многопользовательский компьютер,
--user
предпочтительнее использовать root / sudo или требовать установки администратора и влиять на среду Python каждого пользователя, кроме случаев общих пакетов, которые администратор хочет сделать доступными для всех пользователей по умолчанию.
- Примечание. В комментариях о большинстве установок Unix / Linux указывалось, что при установке системы следует использовать общий менеджер пакетов, например
apt
, вместо pip
.
С виртуальной средой
--user
Вариант в активной среде venv / virtualenv будет установить на локальное местоположение пользователя Python (же , как и без виртуальной среды).
Пакеты устанавливаются в виртуальную среду по умолчанию, но если вы используете --user
их, вы заставите их устанавливать вне виртуальных сред, в каталоге сценариев Python пользователей (в Windows это в настоящее время c:\users\<username>\appdata\roaming\python\python37\scripts
для меня с Python 3.7).
Однако вы не сможете получить доступ к установке системы или пользователя из виртуальной среды (даже если вы использовали ее --user
в виртуальной среде).
Если вы установите виртуальную среду с --system-site-packages
аргументом, у вас будет доступ к папке системных скриптов для python. Я полагаю, что это включало также папку пользовательских скриптов python, но я не уверен. Тем не менее, это может привести к непреднамеренным последствиям, и это не предполагаемый способ использования виртуальных сред.
Расположение системы Python и папок установки локального пользователя
Вы можете найти расположение папки установки пользователя для python с помощью python -m site --user-base
. Я нахожу противоречивую информацию в вопросах и ответах, документации и на самом деле использую эту команду на моем ПК относительно значений по умолчанию, но они находятся под домашним каталогом пользователя ( ~
ярлык в * nix и, c:\users\<username>
как правило, для Windows).
Другие детали
--user
Вариант не является допустимым для каждой команды. Например pip uninstall
, найдет и удалит пакеты, где бы они ни были установлены (в папке пользователя, папке виртуальной среды и т. Д.), И эта --user
опция недопустима.
Вещи, установленные с помощью, pip install --user
будут установлены в локальном расположении, которое будет видеть только текущая учетная запись пользователя, и не потребуют доступа с правами root (в * nix) или доступа администратора (в Windows).
В --user
опции модифицирует все pip
команды , которые принимают его , чтобы увидеть / оперируют пользователя установить папку, так что если вы используете pip list --user
это только покажет вам пакеты , установленные с pip install --user
.
import site; print site.USER_SITE
распечатать место установки. Для меня я получил/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
.