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

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

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

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

Ответы [ 5 ]

0 голосов
/ 14 мая 2019

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

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

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

Решение:

  1. Загрузите MacOS 64-разрядный установщик или MacOS 64-разрядный / 32-разрядный установщик : 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

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

0 голосов
/ 30 января 2019

Сначала я установил 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~ $ 
0 голосов
/ 10 октября 2018

Чтобы решить эту проблему с помощью 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
0 голосов
/ 22 января 2019

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

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
0 голосов
/ 01 июля 2018

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

Чтобы сделать чистую установку 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.

Примечание: Вы можете найти устаревшие ответы в Интернете, где он упоминается 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.

...