A brew upgrade
atualizou meu sistema Python para Python 3.7. Infelizmente, o Python 3.7 quebra outro software que eu preciso usar (incluindo, sem limitação, o Ansible). Eu imagino que esses problemas serão resolvidos na próxima semana, mas, enquanto isso, eu gostaria de reverter para o Python 3.6.5.x
A brew info python
mostra que as versões anteriores ainda estão instaladas e não eliminadas:
➜ 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
Vários brew link
e brew install
comandos que são sugeridas por outros sites não parecem funcionar:
➜ 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 "[email protected]"
==> 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.
Respostas:
Se você ainda tem as versões anteriores disponíveis, basta usar
fonte
brew switch ...
comando para voltar ao 3,7?python3 -m venv --copies venv
copia os arquivos Python em vez de criar links simbólicos, o que os impede de quebrar ao atualizar sua versão do Python.Error: python does not have a version "3.6.5_1" in the Cellar. python installed versions: 3.7.0
Se você não possui uma versão anterior, pode instalar a partir da fórmula anterior desta maneira:
Atualização 2019-10
--ignore-dependencies notice
Caso você esteja usando o
--ignore-dependencies
sinalizador para superar orecursive dependency
erro, ele poderá causar o seguinte erropip3 install
após a instalação:Uma solução alternativa pode ser instalar primeiro suas dependências (tudo, exceto
sphinx-doc
)Observe que ele precisa
openssl
e NÃO,[email protected]
que é a mais recente dependência do homebrew python 3.7.4_1fonte
brew unlink python
faz.brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
.--ignore-dependencies
não funcionar devido à esfinge, comente a dependência na esfinge e reinstale a esfinge, conforme descrito aqui: pyimagesearch.com/2019/01/30/…Error: python contains a recursive dependency on itself: python depends on sphinx-doc sphinx-doc depends on python
Duas opções
Para recuperar uma versão Python instalada anteriormente:
Use
brew info python
para ver o que você instalou anteriormentePara fazer uma instalação limpa do Python 3.6.5, use:
Resposta longa
Existem duas fórmulas para instalar o Python com o Homebrew:
python@2
epython
.O primeiro é para o Python 2 e o segundo para o Python 3.
Nota: Você pode encontrar respostas desatualizadas na Web, onde é mencionado
python3
como o nome da fórmula para instalar o Python versão 3. Agora é sópython
!Por padrão, com essas fórmulas, você pode instalar a versão mais recente da versão principal correspondente do Python. Portanto, você não pode instalar diretamente uma versão secundária como 3.6.
Solução:
Com
brew
, você pode instalar um pacote usando o endereço da fórmula, por exemplo, em um repositório git.Ou especificamente para Python 3
O endereço que você deve especificar é o endereço da última confirmação da fórmula (python.rb) para a versão desejada. Você pode encontrar o identificador do commint consultando o histórico de homebrew-core / Formula / python.rb
https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb
Python> 3.6.5
No link acima, você não encontrará uma fórmula para uma versão do Python acima da 3.6.5. Depois que os mantenedores desse repositório (oficial) lançaram o Python 3.7, eles enviaram apenas atualizações para a receita do Python 3.7.
Como explicado acima, no homebrew você tem apenas Python 2 (python @ 2) e Python 3 (python), não existe uma fórmula explícita para o Python 3.6 .
Embora essas pequenas atualizações sejam irrelevantes na maioria dos casos e na maioria dos usuários, procurarei se alguém fez uma fórmula explícita para a 3.6.
fonte
Após a Etapa 3: Fazer o downgrade do Python 3.7 para o Python 3.6 no macOS Mojave aqui funcionou para mim: https://www.pyimagesearch.com/2019/01/30/macos-mojave-install-tensorflow-and-keras-for-deep -Aprendendo/
fonte
Você pode temporariamente voltar atrás
homebrew-core
e definir aHOMEBREW_NO_AUTO_UPDATE
variável para mantê-la no lugar:Não recomendo a atualização permanente do homebrew-core, pois você perderá os patches de segurança, mas é útil para fins de teste.
Você também pode extrair versões antigas de fórmulas de homebrew para seu próprio toque (tap_owner / tap_name) usando o
brew extract
comando:fonte
brew link [email protected]
. Emborapyenv
seja outra opção também.Não sou especialista nisso, mas tive o mesmo problema. Isto é o que funcionou para mim:
$ 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
fonte