Как я могу установить предыдущую версию 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
Решение:
- Загрузите 64-разрядный установщик macOS или 64-разрядный /32-разрядный установщик macOS: https://www.python.org/downloads/release/python-365/
- На предыдущем шаге он загрузит Python 3.6.5, если, например, вы хотите загрузить Python 3.4.4, замените URL-адрес выше python-365 на python-344
- Загрузить щелкните файл, который вы скачали, откроется установщик с графическим интерфейсом.
- Если вы загрузили python-365, после установки, чтобы запустить эту версию python, введите в терминале python365, то же самое для pip, это будет pip365.
ps: вам не нужно удалять другую версию Python в вашей системе.
Редактировать:
Я нашел гораздо лучшее решение, которое работает на MacOSX, Windows, Linux и т. Д.
- Неважно, установлен ли у вас python или нет.
- Скачать Anaconda
- После установки в типе терминала:
conda init
- В терминале создайте виртуальную среду с любой версией Python, например, я выбрал 3.4.4:
conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
- Затем в терминале вы можете проверить всю виртуальную среду, которую вы создали, с помощью команды:
conda info --envs
- Затем в терминале активируйте виртуальную среду по вашему выбору с помощью:
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 минуты. И в будущем я легко могу переключаться туда и обратно.