Какова цель " 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.)

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

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

3 59

3 ответа:

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

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

--user-- устанавливает в site.USER_SITE. Дополнительная документация в здесь

для моего случая, это было /Users/.../Library/Python/2.7/bin. Поэтому я добавил Это к моему пути (in ~/.bash_profile file):

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

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

Ref: установка 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 это верный способ избежать этого риска.

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

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

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

- E