При активированной виртуальной среде pip install spam
пытается установить в пакеты сайта виртуальной среды. Это почти всегда будет где-то у вас есть права на запись.
pip install --user spam
пытается установить в каталог пользовательских пакетов. Это всегда будет где-то под вашим домашним каталогом, поэтому у вас всегда должны быть права на запись для него.
pip install spam
пытается установить файлы в каталог site-packages для вашей установки Python. Обычно это не будет в вашем домашнем каталоге (обычно это где-то в /Library
), поэтому вы можете иметь или не иметь разрешения на запись.
- Предустановленный Apple Python не дает вам права на запись для своих пакетов сайта.
sudo pip install spam
позволит вам игнорировать разрешения при установке от имени пользователя root, хотя при некоторых установках Python это может вызвать другие проблемы.
- Homebrew, Python.org и Anaconda / Miniconda do дают вам права на запись в их пакеты сайтов, если вы оставите значения по умолчанию в покое.
- Очевидно, что по умолчанию оставьте в покое, если вы знаете, что делаете.
- Менее распространенные способы установки (Enthought, сборка из исходного кода, MacPorts и т. Д.), Вам следует прочитать соответствующие документы.
Так что, скорее всего, вы используете сторонний Python и / или активную виртуальную среду на машинах, где работает pip install spam
, но вы используете предустановленный Python от Apple на тех, на которых он не работает. т.
Хотя вы могли бы исправить это с помощью sudo
, вы, вероятно, не захотите этого по нескольким причинам:
- В последних версиях macOS предустановленный Apple Python и предустановленные с ним пакеты сильно устарели.
- Предустановленные пакеты настроены для поддержки устаревших
easy_install
, а не pip
, поэтому их обновление может быть огромной болью.
- Если вы слишком плохо все перепутаете, вы можете сломать некоторые системные скрипты, от которых зависит ОС.
- Ваши изменения могут быть отменены обновлением системы MacOS.
Итак, лучшим решением является установка Python Homebrew / Anaconda / Python.org, если вы можете, а также использование виртуальных сред, когда можете, и --user
, когда это возможно, когда вы не можете. Любой из этих трех решит вашу проблему, но вы действительно должны сделать все из них.
И затем, если вы случайно попытаетесь установить что-то в пакеты сайтов Apple, вы получите ошибку разрешений, но это хорошо; это означает, что вы на самом деле ничего не меняли, поэтому вам нечего отменять.