brew upgrade
Модернизировал систему Python на Python 3.7. К сожалению, Python 3.7 ломает другое программное обеспечение, которое мне нужно использовать (включая, помимо прочего, Ansible). Я думаю, что эти проблемы будут решены в течение следующей недели или около того, но в то же время я хотел бы откат к Python 3.6.5.x
A brew info python
показывает, что предыдущие версии все еще установлены и не очищены:
➜ brew info python
python: stable 3.7.0 (bottled), HEAD
Interpreted, interactive, object-oriented programming language
https://www.python.org/
/usr/local/Cellar/python/3.6.5 (4,825 files, 100.8MB)
Poured from bottle on 2018-03-31 at 20:21:57
/usr/local/Cellar/python/3.6.5_1 (4,788 files, 99.9MB)
Poured from bottle on 2018-06-20 at 16:00:26
/usr/local/Cellar/python/3.7.0 (4,869 files, 103.3MB)
Poured from bottle on 2018-07-01 at 19:30:37
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/python.rb
Различные команды brew link
и brew install
команды, предлагаемые другими сайтами, не работают:
➜ brew link python@3.6.5
Error: No such keg: /usr/local/Cellar/python@3.6.5
➜ brew link python@3.6.5_1
Error: No such keg: /usr/local/Cellar/python@3.6.5_1
➜ brew install python@3.6.5
Error: No available formula with the name "python@3.6.5"
==> Searching for a previously deleted formula (in the last month)...
Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
Ответы:
Если у вас все еще есть предыдущие версии, вы можете просто использовать
источник
brew switch ...
команду, чтобы вернуться к 3.7?python3 -m venv --copies venv
копиями файлов Python вместо создания символических ссылок, что предотвращает их разрыв при обновлении версии Python.Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Если у вас нет предыдущей версии для переключения, вы можете установить из предыдущей формулы следующим образом:
Обновление 2019-10
- уведомление о зависимостях
В случае, если вы используете
--ignore-dependencies
флаг для преодоленияrecursive dependency
ошибки, он может дать вам следующую ошибку, когда вы делаетеpip3 install
после такой установки:Обходной путь может состоять в том, чтобы сначала установить его зависимости (все, кроме
sphinx-doc
)Обратите внимание, что это необходимо,
openssl
а НЕ,openssl@1.1
что является последней зависимостью в homebrew python 3.7.4_1источник
brew unlink python
делает.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
не работает из-за sphinx, закомментируйте зависимость в sphinx и переустановите sphinx, как описано здесь: pyimagesearch.com/2019/01/30/…Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Два варианта
Чтобы восстановить ранее установленную версию Python:
Используйте,
brew info python
чтобы увидеть, что вы ранее установилиДля чистой установки Python 3.6.5 используйте:
Длинный ответ
Есть две формулы для установки Python с Homebrew:
python@2
иpython
.Первый предназначен для Python 2, а второй - для Python 3.
Примечание. Вы можете найти устаревшие ответы в Интернете, где оно упоминается в
python3
качестве имени формулы для установки Python версии 3. Теперь это простоpython
!По умолчанию с помощью этих формул вы можете установить последнюю версию соответствующей основной версии Python. Таким образом, вы не можете напрямую установить минор версии как 3.6.
Решение:
С помощью
brew
вы можете установить пакет, используя адрес формулы, например, в git-репозитории.Или специально для Python 3
Адрес, который вы должны указать, является адресом последнего коммита формулы (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.
источник
Следующий шаг № 3: понизить Python 3.7 до Python 3.6 на macOS Мохаве работал здесь для меня: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -учусь/
источник
Вы можете временно задним числом
homebrew-core
установитьHOMEBREW_NO_AUTO_UPDATE
переменную так, чтобы она оставалась на месте:Я не рекомендую постоянно задним числом ставить homebrew-core, так как вы пропустите патчи безопасности, но это полезно для тестирования.
Вы также можете извлечь старые версии формул домашнего варки в свой собственный кран (tap_owner / tap_name), используя
brew extract
команду:источник
brew link python@3.6.x
. Хотяpyenv
это еще один вариант.Я не эксперт по этому вопросу, но у меня была такая же проблема. Вот что сработало для меня:
$ brew unlink python $ brew uninstall --ignore-dependencies python3 $ brew uninstall pipenv then from https://www.python.org/downloads/ installed python 3.6.6 $ brew install pipenv
источник