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

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

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

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

Как бы то ни было, поддержка Homebrew нескольких версий Python ужасна и постепенно ухудшается. Я бы рекомендовал вам вообще избегать использования Homebrew для установки Python. Python.org предоставляет Пакеты установки macOS для различных версий Python, которые можно установить бок о бок друг с другом (и бок о бок с установкой Homebrew Python, если хотите). Либо использование этих пакетов, либо использование такого инструмента, как Pyenv, в конечном итоге избавит вас от многих проблем в долгосрочной перспективе.

Daniel Pryden 30.01.2019 16:30

Перед переходом на веб-сайт для ручной загрузки и установки следует рекомендовать @DanielPryden imo pyenv. Люди, которые уже используют homebrew, вероятно, ищут хорошее решение для командной строки. Для тех, кто прокручивает здесь, прокрутите вниз: stackoverflow.com/a/60189988/4600952

Fr4nc3sc0NL 26.05.2021 15:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
145
2
144 321
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Ответ принят как подходящий

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

Чтобы выполнить чистую установку 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: python@2 и 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/commit/master/Formula/python.rb

Python> 3.6.5

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

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

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

Как это повлияет или будет взаимодействовать с пакетами в Homebrew, которые полагаются на интерпретатор python3 по умолчанию?

Telemachus 23.07.2018 00:31

Я не использую (и даже не знаю) ни о каком пакете распространяется с Homebrew, который полагается на Python3 (возможно, есть, я просто не использую). Brew установит Pip вместе с Python, поэтому после этого я использую pip для установки всех пакетов Python.

ePi272314 24.07.2018 02:43

В любом случае приложения, зависящие от Python (установленные с brew или нет), будут искать исполняемый файл python3 в пути к приложениям, и у вас будет python3, указывающий на python3.6. Таким образом, ваш Python 3 по умолчанию будет 3.6 (если вы используете пример выше), и этого должно быть достаточно. Python 3.7 появился совсем недавно; Я сомневаюсь, что есть приложение, которое явно требует Python 3.7, точно так же я не знаю ни одного приложения, которое работает только с Python 3.6. Другими словами. У тебя все будет отлично :)

ePi272314 24.07.2018 02:46

Я установил 3.7 и получил эту ошибку: Error: python 3.7.0 is already installed To install 3.6.5_1, first run brew unlink python '' при использовании 'короткого ответа'.

wuliwong 18.10.2018 22:51

Благодарим вас за прямую ссылку на фиксацию версии 3.6.5. Вы спасли меня от безвыходной ситуации.

tsalaroth 04.11.2018 15:18

Я знаю, что это немного старше, но я изо всех сил пытаюсь понять, как вы получили ссылку на формулу. Текущая версия 3.6 - 3.6.7. Есть ли простой способ найти эту формулу?

diek 22.11.2018 02:14

Hola @diek. К сожалению, в официальном репозитории нет формулы для python> 3.6.5. Я просто редактирую свой ответ, чтобы объяснить это. Я тоже буду искать решение.

ePi272314 25.11.2018 21:24

Как удалить версию python3.6.5, если она вам больше не нужна?

acidjunk 21.02.2019 13:11

У меня это не работает в OS X 10.14.4 / XCode 10.2.1 (10E1001). python не может быть собран, отсутствует сборка brew sphinx. Не уверен, что все захотят запускать его с --ignore-dependencies.

rjurney 19.04.2019 04:34

Спасибо, спасибо и спасибо. Прямая ссылка на 3.6.5 была очень ценной для многих разработчиков!

jjwdesign 17.07.2019 19:47

@ ePi272314 Спасибо. Есть вопрос. Почему я не могу найти этот идентификатор фиксации: f2a764ef944b1080be64bd88dca9a1d80130c558 в истории для homebrew-core / Formula / python.rb?

Jun711 27.08.2019 07:39

Привет @ Jun711. Сначала перейдите к <github.com/Homebrew/homebrew-core>, а затем найдите f2a764ef944b1080be64bd88dca9a1d80130c558; убедитесь, что вы выбрали in this repository. Щелкните Commits слева на странице результатов.

ePi272314 27.08.2019 19:11

@ ePi272314 спасибо. Теперь я тоже это вижу в журнале git. Я думал, что поиск завершен, но поиск хэша фиксации занял некоторое время.

Jun711 27.08.2019 19:49

Что произойдет, если после этого у меня появится brew upgrade? Будет ли это обновлять Python до не-3.6? Могу я как-нибудь предотвратить это?

Johan Walles 09.09.2019 11:55

Ответьте @Johan Walles. Я не могу вспомнить никаких проблем с этим методом и brew upgrade. Теоретически все должно быть в порядке. Команда обновления должна обновлять только установленные формулы, и поскольку вы не используете формулу python, вы не должны получать никаких обновлений этой формулы. Фактически, недостаток этого метода в том, что вы зависнете в Python 3.6.5 (в то время как текущая версия в 3.6.9)

ePi272314 09.09.2019 18:51

После этого при попытке установить по протоколу для этой установленной версии я получаю ошибки SSL от PIP. /usr/local/Cellar/python/3.6.5_1/bin/pip3 install pylint> pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Patrick 23.03.2020 18:46

@ Патрик, что .../pip3 - это псевдоним или двоичный файл? Если это псевдоним, убедитесь, что он указывает в нужное место.

ePi272314 23.03.2020 22:47

Это был правильный вариант из 3.6. Я полностью отказался от этого подхода и перешел на Pyenv + pyenv-virtualenv. Благодарность!

Patrick 23.03.2020 22:50

На Каталине получаю Installation of python from a GitHub commit URL is unsupported

m.spyratos 29.12.2020 18:49

Привет @ m.spyratos. Попробуйте установить из другого репозитория. Бывший. brew install sashkab/python/[email protected], где x ∊ {6,7,8}

ePi272314 30.12.2020 00:21

Чтобы решить эту проблему с помощью 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

Как мне определить tap_owner и tap_name для данного пакета?

rebnoob 07.04.2021 20:40

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

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

и тогда у вас будет кошмар с адом зависимостей ... как discourse.brew.sh/t/brew-install-python3-fails/1756/7

confiq 23.01.2019 12:51

сначала это не сработало для меня; по сути, пришлось сделать это: brew install --debug --ignore-dependencies raw.githubusercontent.com/Homebrew/homebrew-core/…, и как только он не удастся сделать html, просто проигнорируйте ошибку, выбрав 2). ошибка html / docs, вероятно, меня позже укусит, но пока все работает нормально: shrug:

beans 29.01.2019 07:25

Я сначала установил 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~ $ deactivate

Хотя это выглядит так, как будто это было бы здорово, это больше не работает, результат: python -V && python3.7 -V && python3 -V && python3.6 -VPython 2.7.15 Python 3.7.3 Python 3.7.3 zsh: command not found: python3.6

Wafer 29.04.2019 21:05

Присмотритесь к моему ответу, для 3.6 вам нужно написать python3.6 -V. Вы делали python3 -V дважды, поэтому вы дважды получаете 3.7.3 и пропускаете 3.6.

Mian Asbat Ahmad 30.04.2019 12:26

Для меня это скрывает python3.6 под /usr/local/Cellar/python/3.6.5_1/bin. Как только я сделал ссылку, она работает, как вы говорите. Эта система самоуправления на питоне кажется фракталом Рубина Голдберга миллиона программистов, кодирующих броуновское движение.

Eric Leschinski 08.07.2019 00:20

Я попробовал все ответы выше, чтобы установить 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-адрес выше питон-365 на питон-344
  3. Скачать нажмите на файл, который вы скачали, откроется установщик с графическим интерфейсом.
  4. Если вы загрузили питон-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]

Это сработало для меня .. на Mac Catalina .. У меня было 3.9 и 3.7 .. Установлено 3.6.5 первым методом .. Единственная разница теперь заключается в том, чтобы запустить эту версию python, вы наберете в своем терминале python3.6, то же самое для pip это будет pip3.6. Также вы можете проверить установку: - python3.6 --version

Rishijay Shrivastava 24.03.2021 20:51

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

Итак, установив homebrew, выполните следующие действия:

brew install pyenv
pyenv install 3.6.5

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

brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name

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

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

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

curl https://pyenv.run | bash

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

pyenv global 3.6.5

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

pyenv local 3.6.5

На самом деле это не прямой ответ на вопрос, а его обход с помощью подхода virtualenv.

WestCoastProjects 17.04.2020 08:41

на самом деле virtualenv не нужен. pyenv позволяет управлять версиями Python без необходимости использования venv

ClementWalter 17.04.2020 12:49

Я думаю, это лучшее решение в большинстве случаев

Fr4nc3sc0NL 26.05.2021 15:09

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

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

Самым простым способом для меня было установить 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 минуты. А в будущем я легко могу переключаться туда и обратно.

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