it-swarm.com.ru

Допустимо ли и безопасно ли запускать pip install под sudo?

Я начал использовать свой Mac для установки пакетов Python так же, как и на своем ПК с Windows на работе; однако на моем Mac я сталкивался с частыми ошибками разрешения при записи в файлы журналов или пакеты сайтов.

Поэтому я подумал о запуске pip install <package> под Sudo, но является ли это безопасным/приемлемым использованием Sudo, учитывая, что я просто хочу, чтобы это было установлено под моей текущей учетной записью пользователя?

Пример обратной трассировки из-за ошибки ввода-вывода файла журнала:

Command /usr/bin/python -c "import setuptools;__file__='/Users/markwalker/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto
Storing complete log in /Users/markwalker/Library/Logs/pip.log
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 8, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.Egg/pip/__init__.py", line 116, in main
    return command.main(args[1:], options)
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.Egg/pip/basecommand.py", line 141, in main
    log_fp = open_logfile(log_fn, 'w')
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.Egg/pip/basecommand.py", line 168, in open_logfile
    log_fp = open(filename, mode)
IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

Обновление Вероятно, это было связано с разрешениями, однако лучший подход - использовать виртуальные среды для ваших проектов python. Запрещается запускать Sudo pip, если в этом нет крайней необходимости.

99
markwalker_

Используйте виртуальная среда :

$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want

Вы используете только Sudo или повышенные права доступа, когда хотите установить компоненты для глобальной общесистемной Python установки.

Лучше всего использовать виртуальную среду, которая изолирует пакеты для вас. Таким образом, вы можете поиграть, не загрязняя глобальную python установку.

В качестве бонуса, virtualenv не требует повышенных разрешений.

97
Burhan Khalid

Допустимо ли и безопасно ли запускать pip install под Sudo?

Это небезопасно, и его осуждают - см. Каковы риски запуска 'Sudo pip'? Чтобы установить пакет Python в свой домашний каталог, вам не нужны права root. Смотрите опцию description of --user для отправки.

39
Piotr Dobrogost

Ваша первоначальная проблема в том, что pip не может записывать логи в папку.

IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

Вам нужно перейти в папку, в которую вызванный процесс может записать как /tmp, так что cd /tmp и повторный вызов команды, вероятно, будут работать, но это не то, что вам нужно.

НО на самом деле для этого конкретного случая (вы не хотите использовать Sudo для установки пакетов python) и нет необходимости в глобальном пакете при установке вы можете использовать флаг --user, например так:

pip install --user <packagename>

и это будет работать просто отлично.

Я предполагаю, что у вас есть однопользовательская установка python python и ​​вы не хотите читать о virtualenv (что не очень удобно для пользователя) или pipenv .

Как отмечают некоторые люди в разделе комментариев, следующий подход не очень хорошая идея, если вы не знаете, что делать, и застряли:

Другой подход для глобальных пакетов , например, в вашем случае вы хотите сделать что-то вроде:

chown -R $USER /Library/Python/2.7/site-packages/

или в более общем плане

chown -R $USER <path to your global pip packages>
24
throws_exceptions_at_you

Поскольку у меня была та же проблема, я хочу подчеркнуть, что фактически первый комментарий от Brian Cain является решением проблемы "IOError: [Errno 13]" -:

При выполнении во временном каталоге (cd /tmp) IOError больше не возникает, если я запускаю Sudo pip install foo.

9
Edgar

Похоже, ваши разрешения испорчены. Введите chown -R markwalker ~ в Терминале и повторите попытку pip? Дайте мне знать, если вы отсортированы.

5
hd1

У меня возникла проблема с установкой virtualenvwrapper после успешной установки virtualenv.

Мой терминал жаловался после того, как я сделал это:

pip install virtualenvwrapper

Итак, я безуспешно пытался это (НЕ РЕКОМЕНДУЕТСЯ):

Sudo pip install virtualenvwrapper

Затем я успешно установил его с этим:

pip install --user virtualenvwrapper
5
Mowzer