Подтвердить что ты не робот

Какова цель "pip install --user..."?

От pip install --help:

 --user      Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on
             Windows. (See the Python documentation for site.USER_BASE for full details.)

Документация для site.USER_BASE - ужасающая червоточина интересного предмета * NIX, который я не понимаю.

Какова цель --user в простом английском?. Почему вопрос в пакете ~/.local/ имеет значение? Почему бы просто не поставить исполняемый файл где-нибудь в моей $PATH?

4b9b3361

Ответ 1

pip по умолчанию устанавливает пакеты Python в системный каталог (например, /usr/local/lib/python3.4). Для этого требуется доступ root.

--user вместо этого устанавливает пакеты для установки пакетов в ваш домашний каталог, который не требует особых привилегий.

Ответ 2

--user устанавливается в site.USER_SITE.

Для моего случая это был /Users/.../Library/Python/2.7/bin. Поэтому я добавил это в свой PATH (в файле ~/.bash_profile):

export PATH=$PATH:/Users/.../Library/Python/2.7/bin

Ответ 3

В других ответах упоминается site.USER_SITE где размещаются пакеты Python. Если вы ищете двоичные файлы, они идут в {site.USER_BASE}/bin.

Если вы хотите добавить этот каталог в путь поиска оболочки, используйте:

export PATH="${PATH}:$(python3 -c 'import site; print(site.USER_BASE)')/bin"

Ответ 4

В macOS причина использования флага --user заключается в том, чтобы мы не повредили библиотеки, на которые опирается ОС. Консервативный подход для многих пользователей macOS - избегать установки или обновления pip с помощью команды, которая требует sudo. Таким образом, это включает в себя установку на /usr/local/bin...

Ссылка: установка python для Neovim (https://github.com/zchee/deoplete-jedi/wiki/Setting-up-Python-for-Neovim)

Я не совсем понимаю, почему установка в /usr/local/bin опасна для Mac, учитывая тот факт, что система использует только двоичные файлы python в /Library/Frameworks/ и /usr/bin. Я подозреваю, потому что, как отмечалось выше, для установки в /usr/local/bin требуется sudo, что открывает возможность совершить дорогостоящую ошибку с системными библиотеками. Таким образом, установка в ~/.local/bin - надежный способ избежать этого риска.

Ссылка: использование python на Mac (https://docs.python.org/2/using/mac.html)

Наконец, в той степени, в которой есть преимущество установки пакетов в /usr/local/bin, мне интересно, имеет ли смысл сменить владельца каталога с root на user? Это позволило бы избежать использования sudo, в то же время защищая от внесения изменений, зависящих от системы. * Является ли это по умолчанию безопасностью, как следствие того, как системы Unix чаще использовались в прошлом (в качестве серверов)? Или, по крайней мере, просто хороший способ для пользователей Mac, не использующих сервер?

* Примечание. Функция защиты целостности системы Mac (SIP) также защищает пользователя от изменения системных библиотек.

- E

Ответ 5

Лучший способ - установить virtualenv и не требовать путаницы --user. Вы получите больше гибкости и не будете беспокоиться о путанице в разных версиях и проектах Python при каждой установке пакета.

https://virtualenv.pypa.io/en/stable/

Ответ 6

Просто предупреждение:

По этому вопросу, --user в настоящее время не действует в виртуальном окр pip, так как местоположение пользователя не имеет смысла для виртуальной среды.

Так что не используйте pip install --user some_pkg внутри виртуальной среды, иначе pip виртуальной среды будет перепутан. Смотрите этот ответ для более подробной информации.