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

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

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

Я прочитал о другой упаковке pyenv это может помочь в установке другого Python, но это решение не подходит для меня.

2 ответа

Решение

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

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

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

Чтобы восстановить ранее установленную версию Python:

brew switch python 3.x.x_x # Ex. 3.6.5_1

использование brew info python чтобы увидеть, что вы ранее установили

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

Есть две формулы для установки Python с Homebrew: python@2 а также python,
Первый для Python 2, а второй для Python 3.

Примечание. Вы можете найти устаревшие ответы в Интернете, где они упоминаются. python3 как имя формулы для установки Python версии 3. Теперь это просто 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.

Я перепробовал все, но не смог заставить работать. Наконец я использовалpyenv и это работало прямо как шарм.

Так что имея homebrew установлено, только делать:

brew install pyenv
pyenv install 3.6.5

для управления виртуальными машинами:

brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name

См. Pyenv и pyenv-virtualenv для получения дополнительной информации.

РЕДАКТИРОВАТЬ (2019/03/19)

Я обнаружил, что использовать pyenv-installer проще, чем homebrew, для установки pyenv и pyenv-virtualenv direclty:

curl https://pyenv.run | bash

Чтобы управлять версией Python, либо глобально:

pyenv global 3.6.5

или локально в заданном каталоге:

pyenv local 3.6.5

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

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 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

Сначала я установил 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, Теперь у меня есть все питоны в системе для создания виртуальных сред.

mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5

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

mian@tdowrick2~ $ 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.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.7.1
(env) mian@tdowrick2~ $ deactivate

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

mian@tdowrick2~ $ 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.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.6.5
(env) mian@tdowrick2~ $ 

Я попробовал все ответы выше, чтобы установить 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. Загрузить щелкните файл, который вы скачали, откроется установщик с графическим интерфейсом.
  4. Если вы загрузили python-365, после установки, чтобы запустить эту версию python, введите в терминале python365, то же самое для pip, это будет pip365.

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


Редактировать:


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

  1. Неважно, установлен ли у вас python или нет.
  2. Скачать Anaconda
  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]

В случае, если кто-то столкнется с проблемой пипса, как показано ниже

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Основная причина в том, что openssl 1.1 больше не поддерживает python 3.6. Итак, вам необходимо установить старую версию openssl 1.0

вот решение:

brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb

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

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

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

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

brew extract python tap_owner/tap_name --version=3.6.5

Самым простым способом для меня было установить Anaconda: https://docs.anaconda.com/anaconda/install/

Там я могу создать столько сред с разными версиями Python, сколько захочу, и переключаться между ними одним щелчком мыши. Что может быть проще?

Чтобы установить разные версии Python, просто следуйте этим инструкциям https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html

Новая среда разработки с другой версией Python была создана за 2 минуты. И в будущем я легко могу переключаться туда и обратно.

Другие вопросы по тегам