Как установить предыдущую версию Python 3 в macOS с помощью homebrew?

Как установить предыдущую версию Python 3 в macOS с использованием пивоварения?

С командой brew install python я получил последнюю версию Python 3 (в настоящее время v3.7.0), но мне нужна последняя версия Python 3.6 (в настоящее время 3.6.5).

Я прочитал о еще одном пакете pyenv который может помочь в обработке различной установки python, но это решение не подходит для меня.

Ответ 1

Короткий ответ

Для чистой установки Python 3.6.5 используйте:

brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Если вы предпочитаете восстановить ранее установленную версию, то:

brew info python           # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1

Длинный ответ

Существуют две формулы для установки Python с Homebrew: [email protected] и python.
Первый предназначен для Python 2, а второй - для Python 3.

Примечание. Вы можете найти устаревшие ответы в Интернете, где в качестве имени формулы для установки Python версии 3 упоминается python3 Теперь это просто python !

По умолчанию с помощью этих формул вы можете установить последнюю версию соответствующей основной версии Python. Таким образом, вы не можете напрямую установить минор версии как 3.6.

Решение

С помощью brew вы можете установить пакет, используя адрес формулы, например, в git-репозитории.

brew install https://the/address/to/the/formula/FORMULA_NAME.rb

Или специально для Python 3

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb

Адрес, который вы должны указать, является адресом последнего коммита формулы (python.rb) для желаемой версии. Вы можете найти идентификатор commint, посмотрев историю для homebrew-core/Formula/python.rb

https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb

Python> 3.6.5

В ссылке выше вы не найдете формулу для версии Python выше 3.6.5. После того, как сопровождающие этого (официального) репозитория выпустили Python 3.7, они только отправляют обновления по рецепту Python 3.7.

Как объяснялось выше, с homebrew у вас есть только Python 2 (python @2) и Python 3 (python), для Python 3.6 не существует явной формулы.

Хотя эти незначительные обновления в большинстве случаев и для большинства пользователей не имеют значения, я буду искать, если кто-то выполнил явную формулу для 3.6.

Ответ 2

В качестве обновления при выполнении

brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Вы можете столкнуться

Error: python contains a recursive dependency on itself:
  python depends on sphinx-doc
  sphinx-doc depends on python

Чтобы обойти это, добавьте аргумент --ignore-dependencies в brew install.

brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Ответ 3

Сначала я установил Python 3.7.

brew install python3
brew unlink python

Затем я установил Python 3.6.5, используя ссылку выше

brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies

После этого я запустил brew link --overwrite python. Теперь у меня есть все питоны в системе для создания виртуальных сред.

[email protected]~ $ python --version
Python 2.7.10
[email protected]~ $ python3.7 --version
Python 3.7.1
[email protected]~ $ python3.6 --version
Python 3.6.5

Создать виртуальную среду Python 3.7.

[email protected]~ $ virtualenv -p python3.7 env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/mian/env/bin/python3.7
Also creating executable in /Users/mian/env/bin/python
Installing setuptools, pip, wheel...
done.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.7.1
(env) [email protected]~ $ deactivate

Создать виртуальную среду Python 3.6

[email protected]~ $ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/mian/env/bin/python3.6
Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6)
Installing setuptools, pip, wheel...
done.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.6.5
(env) [email protected]~ $ 

Ответ 4

Я попробовал все ответы выше, чтобы установить Python 3.4.4. Установка Python работала, но PIP не был бы установлен, и я ничего не мог сделать, чтобы он работал. Я использовал Mac OSX Mojave, что вызывало некоторые проблемы с zlib, openssl.

Чего не делать:

  • Старайтесь не использовать Homebrew для предыдущей версии, заданной формулой Python или Python3.
  • Не пытайтесь скомпилировать Python

Решение:

  1. Загрузите 64-разрядный установщик macOS или 64-разрядный /32-разрядный установщик macOS: https://www.python.org/downloads/release/python-365/
  2. На предыдущем шаге будет загружен Python 3.6.5, если, например, вы хотите загрузить Python 3.4.4, замените в URL выше python-365 на python-344
  3. Загрузка Нажмите на файл, который вы загрузили, установщик GUI откроет
  4. Если вы загрузили python-365, после установки, чтобы запустить эту версию python, вы наберете в своем терминале python365, то же самое для pip, это будет pip365

p.s: Вам не нужно удалять другую версию Python в вашей системе.


Изменить:


Я нашел намного лучшее решение, которое работает на MacOSX, Windows, Linux и т.д.

  1. Неважно, если у вас уже установлен Python или нет.
  2. Скачать Анаконда
  3. После установки в терминале введите: conda init
  4. В терминале создайте виртуальную среду с любой версией Python, например, я выбрал 3.4.4: conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
  5. Затем в терминале вы можете проверить всю виртуальную среду, которую вы создали, с помощью команды: conda info --envs
  6. Затем в терминале активируйте виртуальную среду по вашему выбору с помощью: conda activate [The name of your virtual environment that was shown with the command at step 5]

Ответ 5

Чтобы решить эту проблему с помощью homebrew, вы можете временно восстановить homebrew-core и установить переменную HOMEBREW_NO_AUTO_UPDATE чтобы удерживать ее на месте:

cd 'brew --repo homebrew/core'
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python

Я не рекомендую постоянно поддерживать backbating homebrew-core, так как вы пропустите патчи безопасности, но это полезно для тестирования.

Вы также можете извлечь старые версии формул homebrew в свой собственный кран (tap_owner/tap_name) с помощью команды brew extract:

brew extract python tap_owner/tap_name --version=3.6.5

Ответ 6

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

ln -s /usr/local/opt/python/bin/python3.6 /usr/local/opt/python/bin/python3.7