Я начал использовать свой 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
Следует избегать бега без крайней необходимости.
cd /tmp; sudo pip install foo
' - адекватный обходной путь.Ответы:
Используйте виртуальную среду :
Вы используете
sudo
или повышенные разрешения только тогда, когда хотите установить что-то для глобальной общесистемной установки Python.Лучше всего использовать виртуальную среду, которая изолирует пакеты за вас. Таким образом, вы можете поиграть, не загрязняя глобальную установку python.
В качестве бонуса virtualenv не требует повышенных разрешений.
источник
sudo pip install
. Допустим, мне нужно установить какой-то пакет, который я буду использовать во многих проектах или на системном уровне. Например, какой-то инструмент CLI, напримерpgcli
. Очевидно, мне не нужен для этого виртуальный env, я хочу установить его глобально. Стоит ли использоватьsudo pip install
или есть более правильные методы? Вот в чем вопрос.Это небезопасно, и к этому относятся неодобрительно - см. Каковы риски запуска sudo pip? Чтобы установить пакет Python в домашний каталог, вам не нужны права root. См описания в
--user
опции для пипа.источник
sudo pip install
не знал о вреде его использования. Как я могу отменить эту команду или заблокировать запускsudo
?Ваша первоначальная проблема заключается в том, что pip не может записывать журналы в папку.
Вам нужно записать компакт-диск в папку, в которой вызываемый процесс может писать
/tmp
так,cd /tmp
и повторный вызов команды, вероятно, сработает, но это не то, что вы хотите.НО на самом деле для этого конкретного случая (вы не хотите использовать
sudo
для установки пакетов python) и отсутствия необходимости в установке глобальных пакетов вы можете использовать такой--user
флаг:и он будет работать нормально.
Я предполагаю, что у вас есть установка python для одного пользователя, и вы не хотите беспокоиться о чтении о virtualenv (что не очень удобно для пользователя) или pipenv .
Как отмечали некоторые люди в разделе комментариев, следующий подход - не очень хорошая идея, если вы не знаете, что делать, и застряли:
Другой подход для глобальных пакетов, например, в вашем случае, вы хотите сделать что-то вроде:
или в более общем смысле
источник
--user
Вариант для пип был дан в виде раствора в моем ответе , который уже существовал , когда вы писали ваши.--user
мне помогает!site-packages
каталогу Python сродни «починке» помпы, ударив по ней гаечным ключом. Он защищен по какой-то причине - вы не должны там ничего устанавливать . Реальное решение не смешивать системы распределения Python с программированием изо дня в день. Установите другой дистрибутив Python (из Python.org, Homebrew, Canopy и т. Д.).Поскольку у меня была такая же проблема, я хочу подчеркнуть, что на самом деле первый комментарий Брайана Кейна - это решение проблемы «IOError: [Errno 13]»:
Если выполняется в каталоге temp (
cd /tmp
), ошибка IOError больше не возникает при запускеsudo pip install foo
.источник
sudo pip
это «решение» и, таким образом, устанавливаете пакеты с привилегиями root, что, вероятно, не то, что вам нужно?/tmp
вызывается изнутри, он работает, потому что у всех есть доступ на запись.У меня возникла проблема с установкой
virtualenvwrapper
после успешной установкиvirtualenv
.Мой терминал пожаловался после того, как я сделал это:
Итак, я безуспешно пробовал это
(НЕ РЕКОМЕНДУЕТСЯ):Затем я успешно установил его следующим образом:
источник
Похоже, ваши разрешения испорчены. Введите
chown -R markwalker ~
Терминал и попробуйте ещеpip
раз? Дайте мне знать, если вас рассортировалиисточник
chown
даетOperation not permitted
много скрытых каталогов, таких как.shsh
& я предполагаю, что он работает с файлами, которые он может установить сейчас, но я посмотрю, что произойдет, когда вернется приглашение cli.