Как я могу использовать Homebrew для установки Python 2 и 3 на Mac?


146

Мне нужно иметь возможность переключаться между Python 2 и 3. Как это сделать с помощью Homebrew, так как я не хочу путаться с путями и попадать в неприятности. Прямо сейчас у меня установлен 2.7 через Homebrew.


Возможно, вы захотите изменить вопрос, чтобы удалить ссылку на
домашний напиток,

Ответы:


288

Я бы использовал pyenv. Вы можете установить его:

$ brew install pyenv

Чтобы включить pyenv в вашей оболочке Bash, вам нужно запустить:

$ eval "$(pyenv init -)"

Чтобы сделать это автоматически для Bash при запуске, добавьте эту строку в свой ~/.bash_profile. 1

Использование:

После того, как вы установили pyenv и активировали его, вы можете установить разные версии python и выбрать, какую из них использовать. Пример:

$ pyenv install 2.7.5

Вы можете проверить версии, которые вы установили с:

$ pyenv versions

И вы можете переключаться между версиями Python с помощью команды:

$ pyenv global 3.3.1

Также вы можете установить версию Python для текущего каталога с помощью:

$ pyenv local 3.5.2

Вы можете проверить, запустив python --version:

$ python --version
Python 3.5.2

1 Homebrew раньше инструктировал вас сделать это после установки pyenv, но сообщение было удалено . Для Zsh и других оболочек точные шаги могут отличаться.


Это самое простое решение. В настоящее время я использую это для переключения между Python 3 и 2.7.x
Naz Mir

3
Если я уже установил python 2.7 через homebrew , нужно ли мне позаботиться об использовании pyenv ? Могу ли я установить другой python 2.7 через pyenv ?
Дрейк Гуан

3
Да, вы можете установить другой python 2.7 через pyenv. Он установит этот питон в $ PYENV_ROOT / version. Другой python 2.7, установленный через homebrew, может отображаться как «системный», когда вы запускаете «версии pyenv».
Moliware

5
Мне пришлось добавить eval "$(pyenv init -)"в мой .profile / .zshrc, чтобы заставить работать pyenv.
Ромер

5
@ilciavo, возможно, вам придется добавить eval "$(pyenv init -)"в свой ~ / .bash_profile
Jojanzing

77

Вы можете установить обе версии одновременно.

Для доморощенного> = 1.5.0:

С 1 марта 2018 года pythonформула будет обновлена ​​до Python 3.x, а новая python@2формула будет добавлена ​​специально для Python 2.7.

Смотрите объявление об изменениях здесь или окончательный документ об использовании Homebrew для Python здесь .

Для пожилых Homebrew:

Для Python 2.x:

brew install python

Для Python 3.x:

brew install python3

Теперь у вас будут установлены обе версии на вашем компьютере. Если вы хотите использовать версию 2, используйте pythonисполняемый файл. Если вы хотите использовать версию 3, используйте python3исполняемый файл.


вопрос об использовании обоих
meduz

Спасибо за обновление! Я следовал похожему маршруту, но у меня были проблемы с настройкой PYTHONPATHпри каждом изменении ... Есть идеи? кроме того, pyenvэто здорово.
Медуз

9
Также обратите внимание, что имея python2 и python3 бок о бок, этот python указывает на python2, а python3 указывает на python3, как и ожидалось. Тем не менее, большая проблема заключается в том, что pip не указывает на pip2, как вы могли ожидать. Это фактически указывает на pip3 (как и pip3, очевидно). Чтобы использовать pip2, явно используйте pip2. Немного противоречиво, поскольку суффикс non number для python указывает на 2, а суффикс non number для pip указывает на 3.
JD

5
Это портит такие исполняемые файлы, как pip. В этом случае python3 будет перезаписывать пункт Python2, и это будет команда «pip» по умолчанию
kissgyorgy

1
В ответ на @ kissgyorgy свой комментарий: У меня был этот вопрос, последний комментарий по этому вопросу решить это для меня github.com/Homebrew/legacy-homebrew/issues/50607 , бег python3 -m pip install -U --force-reinstall pipзатем python -m pip install -U --force-reinstall pipположить вещи обратно к тому , pipобратитесь к Python 2 - х pip.
Гарри

11

В настоящее время Homebrew предоставляет две разные формулы для Python 2 и 3. brew install pythonустанавливает python3 и brew install python@2устанавливает python2. Больше подробностей в Homebrew docs:

https://docs.brew.sh/Homebrew-and-Python

Если в настоящее время у вас установлен 2.x через Homebrew, Homebrew сообщит вам следующее:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Если вы запускаете:

brew upgrade python

Вы должны быть в состоянии сделать:

python --version

и

python3 --version

Чтобы увидеть, какие версии Python 2.x и 3.x установлены.


6

В качестве альтернативы, вы можете просто ввести «python3» для запуска своей самой последней версии python3.x и «python» или «python2» для запуска последней установленной версии 2.x.


4

Есть способы использовать оба варианта, но сегодня самое простое решение - использовать pyenv . pyenv позволяет легко переключаться между версиями. Вот что я сделал для настройки:

ШАГ 1:

Удалить все питоны с вашего Mac

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Удалить следующее из ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

а также следующее из ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

ШАГ 2 :

Установите pyenv и нужные вам версии python

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

ЭТАП 3 :

добавить pyenv initк bash_profileилиbashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

ШАГ 4 :

Проверьте, что было установлено

pyenv versions
  • система (устанавливается /Users/ishandutta2007/.pyenv/version)

    2,7

    3.7.0

STEP5:

Выберите по умолчанию

pyenv global 3.7.0

Когда проекту требуется более старая версия, просто перейдите в его корневую папку и запустите

pyenv local 2.7

1

Используйте asdf !

Баллада АСДФ

Когда-то был язык программирования.
Было много его версий.
Поэтому люди написали менеджер версий для него.
Переключение между версиями для проектов.
Разное, старое, новое.

Затем появилось больше языков программирования.
Итак, появилось больше менеджеров версий
и множество команд для них.

Я установил много из них,
я узнал много команд

Тогда я сказал, еще один менеджер версий,
который я напишу вместо

Итак, появился еще один менеджер
версий в формате asdf manager - https://github.com/asdf-vm/asdf

Менеджер версий, настолько расширяемый,
для которого любой может создать плагин.
Для поддержки своего любимого языка.
Больше не нужно устанавливать больше менеджеров версий
или изучать больше команд.

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


Мне кажется, что это не конкурирующие инструменты, а один и тот же инструмент, реализованный один раз (а иногда и более одного раза) для каждого языка. Вроде как, зачем нам нужно что-то вроде LSP, ИМХО. microsoft.github.io/language-server-protocol/overview
Мэтт Шлобом

1

Я думал, что у меня такое же требование - перемещаться между версиями Python - но я достиг всего, что мне было нужно, только с помощью Python3.6, собирая из исходного кода вместо использования homebrew.

git clone https://git.<theThingYouWantToInstall>

В зависимости от репо, проверьте, существует ли уже файл MAKE, настроенный для этой опции.



-3

Хорошо, я боролся с установкой Python3, потому что у меня не было pip3.

sudo pip3 command not found

и так я и сделал

brew uninstall --force --ignore-dependencies python3

и установил обычный Python 3.6.2 из официального дистрибутива, а затем у меня был pip3, и все компоненты были в порядке.


ОП спрашивает об установке обоих.
Аджит Ганга
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.