Как связать домашнюю версию brew python и установить ее по умолчанию

Я только что переключился с MacPorts на HomeBrew. После установки всех необходимых версий XCode и другого программного обеспечения я попытался установить python с помощью homebrew: я думаю, что он успешно установлен, но когда я делаю which python, он все еще показывает мне 2.7.3, который, я думаю, является версией, поставляемой с Mountain Lion.

which python
/usr/local/bin/python

python --version
Python 2.7.3

поэтому я снова попытался установить

brew install python --framework --universal
Warning: python-2.7.5 already installed, it just not linked

Но он говорит, что python 2.7.5 уже устанавливает и не связан, я пытался сделать brew link python

Это привело меня к следующему сообщению, поэтому я понятия не имею, что я должен делать:

Связывание/usr/local/Cellar/python/2.7.5... Предупреждение: не удалось связать python. Отмена связи...

Error: Could not symlink file: /usr/local/Cellar/python/2.7.5/bin/smtpd2.py
Target /usr/local/bin/smtpd2.py already exists. You may need to delete it.
To force the link and overwrite all other conflicting files, do:
  brew link --overwrite formula_name

To list all files that would be deleted:
  brew link --overwrite --dry-run formula_name

Ответы

Ответ 1

После установки python3 с помощью brew install python3 я получаю сообщение об ошибке:

Error: An unexpected error occurred during the 'brew link' step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

После ввода brew link python3 произошла ошибка:

Linking /usr/local/Cellar/python/3.6.4_3... Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

Решить проблему:

sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/*
brew link python3

После этого я могу открыть python3, набрав python3 👍

(Из https://github.com/Homebrew/homebrew-core/issues/20985)

Ответ 2

Если вы использовали

brew install python

перед тем, как "unlink" вы получили

brew info python
/usr/local/Cellar/python/2.7.11

python -V
Python 2.7.10

так что

brew unlink python && brew link python

и откройте новую оболочку терминала

python -V
Python 2.7.11

Ответ 3

В терминале введите:

brew link python

Ответ 4

Я думаю, вы должны быть точным, с какой версией вы хотите связать команду brew link python как:

brew link python 3

Это даст вам такую ​​ошибку:

Linking /usr/local/Cellar/python3/3.5.2... 
Error: Could not symlink bin/2to3-3.5
Target /usr/local/bin/2to3-3.5
already exists. 

Вы можете удалить его:

rm '/usr/local/bin/2to3-3.5'

Чтобы заставить ссылку и перезаписать все конфликтующие файлы:

brew link --overwrite python3

Чтобы просмотреть все файлы, которые будут удалены:

brew link --overwrite --dry-run python3

но вам нужно скопировать/вставить команду, чтобы принудительно установить ссылку:

brew link --overwrite python3

Я думаю, что вы должны установить версию (более новую).

Ответ 5

На OS X High Sierra мне пришлось сделать это:

sudo install -d -o $(whoami) -g admin /usr/local/Frameworks
brew uninstall --ignore-dependencies python
brew install python
python --version # should work, returns 2.7, which is a Python thing (it weird, but ok)

кредит https://gist.github.com/irazasyed/7732946#gistcomment-2235469

Я думаю, что это лучше, чем рекурсивное засорение /usr/local dir, но это может решить другие проблемы;)

Ответ 6

brew переключиться на python3 по умолчанию, поэтому, если вы все еще хотите установить python2 в качестве бина python по умолчанию, запустите:

brew unlink python && brew link python2 --force

Ответ 7

Этот ответ предназначен для обновления Python 2.7.10 до Python 2.7.11 на Mac OS X El Capitan. В Тип терминала:

brew unlink python

После этого типа на терминале

brew install python

Ответ 8

Я использую эти команды, чтобы решить это.

mkdir /usr/local/lib
mkdir /usr/local/lib/pkgconfig
brew link python