Как использовать установленный brew Python в качестве Python по умолчанию?
Я пытаюсь перейти на Homebrew (после использования fink и macport) в Mac OS X 10.6.2. Я установил Python 2.7 с
brew install python
Проблема в том, что, в отличие от Macport, похоже, что утилиты python_select не существует, а мой mac python по умолчанию всегда по умолчанию
which python
дай мне
/usr/bin/python
а также /usr/bin/python
это не символическая ссылка
Как я могу сделать Python Brew flavour моим Python по умолчанию?
25 ответов
Как подсказывает сам установщик homebrew, обязательно добавьте это в свой .bashrc
или же .zshrc
:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
Поскольку вы используете Homebrew, следующая команда дает лучшую картину:
brew doctor
Выход:
==> / usr / bin встречается до / usr / local / bin Это означает, что системные программы будут использоваться вместо программ, предоставляемых Homebrew. Это проблема, если вы, например. Brew установлен Python.
Попробуйте отредактировать ваш.bash_profile, чтобы поместить: /usr/local/bin перед / usr / bin в $PATH.
Смотрите: Как сделать символическую ссылку на Python в Homebrew?
$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python
Для машин Apple Silicon путь немного отличается. После запуска
brew install python
, вы должны убедиться, что ваш
~/.zshrc
использует правильные пути Homebrew:
# Homebrew
eval "$(/opt/homebrew/bin/brew shellenv)"
# Homebrew: Python
export PATH="/opt/homebrew/opt/python/libexec/bin:$PATH"
Полученные результаты:
% which python
/opt/homebrew/opt/python/libexec/bin/python
% python --version
Python 3.9.9
% which pip
/opt/homebrew/opt/python/libexec/bin/pip
% pip -V
pip 21.3.1 from /opt/homebrew/lib/python3.9/site-packages/pip (python 3.9)
Быстрая починка:
- открыто
/etc/paths
- Изменить порядок строк (самый высокий приоритет сверху)
В моем случае /etc/paths
похоже:
/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin
Если вы хотите узнать больше о путях в OSX, я нашел эту статью весьма полезной:
http://muttsnutts.github.com/blog/2011/09/12/manage-path-on-mac-os-x-lion/
Я сделал "brew install python" для OSX High Sierra. $PATH
имел /usr/local/bin
перед любым другим путем, но все же which python
указывал на системный питон.
Когда я посмотрел глубже, я обнаружил, что нет исполняемого файла Python в /usr/local/bin
, Исполняемый файл называется python2
, Чтобы решить эту проблему, создайте символическую ссылку python
указывая на python2
:
/usr/local/bin $: ln -s python2 python
python
формула теперь использует python3
(v3.6.5 на данный момент), brew свяжет каталог:
/usr/local/opt/python -> ../Cellar/python/3.6.5
это также свяжет двоичный файл:
/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3
Если вам все еще нужно использовать python2.x
, используйте:
brew install python@2
Использовать доморощенный python
, просто поместите его каталог в PATH, для bash:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
для рыбы:
set -x PATH /usr/local/opt/python/libexec/bin $PATH
Замечания:
- при этом будет затенена версия системы по умолчанию
python
- доморощенный используется для ссылки на Python
/usr/local/share/python
в старых версиях.
Homebrew НЕ заменяет вещи в "/usr/bin". Вы просто захотите поставить "/ usr / local / bin" перед "/ usr / bin" на вашем пути, а затем "какой питон" даст вам "/usr/local/bin/python".
Замена /usr/bin/python (или /usr/bin/ruby) крайне не рекомендуется.
Измените ваш $PATH, добавьте это в ваш bashrc или bash_profile:
export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH
больше нажмите здесь: Выпуск № 89791
Я сделал brew install python
мой $PATH
было хорошо, но все же, which python
дал мне систему, установленную один. Перезапуск терминала исправил это.
Вам нужно отредактировать переменную окружения PATH, чтобы убедиться, что везде, где находится доморощенный питон, ищется перед /usr/bin. Вы также можете настроить вещи в своей конфигурации оболочки так, чтобы переменная типа PYTHON была установлена на желаемую версию python и вызывать $PYTHON
скорее, чем python
из командной строки.
Кроме того, как сказал другой автор (и особенно на Mac), НЕ связывайтесь с питоном в / usr / bin, чтобы указать на другую установку питона. Вы просто напрашиваетесь на неприятности, если делаете.
python
сейчас указывает на python3
, если тебе надо python 2
затем сделайте:brew install python@2
а затем в вашем файле.zshrc или.bashrcexport PATH="/usr/local/opt/python@2/libexec/bin:$PATH"
Сейчас, pyhon --version
= Python 2.7.14 и python3 --version
= Python 3.6.4. Такое поведение я привык видеть в моем терминале.
Я полагаю, что есть способы сделать homebrew python по умолчанию, но, по моему мнению, правильный способ решения проблемы - не связываться с путями системного python: лучше создать virtualenv, в котором homebrew python будет использоваться по умолчанию (используя virtualenv - опция -Python). Используя такие инструменты, как python_select
почти всегда плохая идея.
Добавить /usr/local/opt/python/libexec/bin
прямо к вашему .bash_profile
:
export PATH="/usr/local/opt/python/libexec/bin:$PATH"
После этого все должно работать правильно.
Вместо этого используйте pyenv для установки и переключения между версиями Python. Я много лет использую rbenv, который делает то же самое, но для Ruby. До этого был ад управляющих версий.
Обратитесь к странице GitHub pyenv в инструкции по установке. В основном это выглядит так:
- Установите pyenv с помощью homebrew.brew install pyenv
- Добавьте функцию в конец сценария запуска оболочки, чтобы pyenv мог творить чудеса. echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
- Используйте pyenv для установки любого необходимого количества различных версий Python.
pyenv install 3.7.7
. - Установите версию по умолчанию (глобальную) на только что установленную современную версию.
pyenv global 3.7.7
. - Если вы работаете над проектом, который должен использовать другую версию Python, изучите
pyevn local
. Это создает файл в папке вашего проекта, в котором указана версия Python. Pyenv будет переопределять глобальную версию Python версией в этом файле.
Просто делать:
brew install python
brew link python
После этого добавьте это в ваш bashrc или bash_profile:
alias python='/usr/local/bin/python2'
Наслаждайтесь!
попробуй это
which python3
Попробуйте ввести
python3
вместо того, чтобы просто
python
Вы можете редактировать /etc/paths. Вот мой:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
Затем добавьте символическую ссылку для версии Python. В моем случае
$ cd /usr/local/bin
$ ln -s python3 python
Вуаля!
Приветствую вас! Мне нужно использовать версию Python 3.10, чтобы использовать ее новые функции. Мое решенное решение на 03.07.2022 выглядит следующим образом. Получайте удовольствие от написания кода на Python!
» rm '/usr/local/bin/pip3.10'
» brew link python@3.10
» echo 'export PATH="/usr/local/opt/python@3.10/bin:$PATH"' >> ~/.zshrc
» python3
Python 3.10.5 (main, Jun 23 2022, 17:15:25) [Clang 13.1.6 (clang-1316.0.21.2.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
В Mac OS X, если вы установили Python3 через Homebrew с помощьюbrew install python3
, то вам нужно запустить через терминал следующую команду:
export PATH="/usr/local/opt/python@3.11/libexec/bin:$PATH"
Это для последней версии Python 3.11. Обязательно отредактируйте команду в соответствии с вашей версией Python.
Если ты рыбья раковина
echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish
Ну, на случай, если кому-то понадобится что-то, что мне нужно, например, просто немного поиграть с Python, вы также можете вызвать его из терминала с помощью
python3 my_python_file.py
учитывая, что установлен Python 3.x, в моем случае, конечно, с помощью Brew.
brew link python
И вы должны создать/добавить псевдоним для python и поместить его в свой .zprofile (находится в папке Users/username, если вы нажмете Shift+command+.
Это должно указывать на место установки вашего доморощенного питона.
alias python ='opt/homebrew/bin/python3'
Поскольку High Sierra, вам необходимо использовать:
sudo chown -R $(whoami) $(brew --prefix)/*
Это потому что /usr/local
больше не может быть подавлен
Понятия не имею, что вы имеете в виду с Python по умолчанию. Я считаю плохой практикой заменять системный интерпретатор Python другой версией. Функциональность системы может в некоторой степени зависеть от системного Python и конкретных модулей или конкретной версии Python. Вместо этого установите ваши собственные установки Python в безопасном другом месте и отрегулируйте $PATH так, как вам нужно, чтобы вызывать вас Python через поиск пути вместо поиска Python по умолчанию.