Como posso usar o Homebrew para instalar o Python 2 e 3 no Mac?

146

Eu preciso ser capaz de alternar entre Python 2 e 3. Como faço isso usando o Homebrew, pois não quero mexer no caminho e ter problemas. No momento, tenho o 2.7 instalado pelo Homebrew.

MostafaMV
fonte
Você pode querer mudar a pergunta para retirar a referência homebrew uma vez que não é necessariamente um requisito para realizar seu objetivo (ver minha resposta abaixo, por exemplo stackoverflow.com/a/49091638/2923369 )
Matt Schlobohm

Respostas:

288

Eu usaria o pyenv. Você pode instalá-lo:

$ brew install pyenv

Para habilitar o pyenv no seu shell Bash, você precisa executar:

$ eval "$(pyenv init -)"

Para fazer isso automaticamente no Bash na inicialização, adicione essa linha ao seu ~/.bash_profile. 1

Uso:

Depois de instalar o pyenv e ativá-lo, você pode instalar versões diferentes do python e escolher qual delas pode ser usada. Exemplo:

$ pyenv install 2.7.5

Você pode verificar as versões com as quais instalou:

$ pyenv versions

E você pode alternar entre versões python com o comando:

$ pyenv global 3.3.1

Além disso, você pode definir uma versão python para o diretório atual com:

$ pyenv local 3.5.2

Você pode verificar executando python --version:

$ python --version
Python 3.5.2

1 O Homebrew costumava instruí-lo a fazer isso após a instalação do pyenv, mas a mensagem foi removida . Para o Zsh e outras conchas, as etapas precisas podem ser diferentes.

moliware
fonte
Esta é a solução mais simples. Actualmente usar esta para comutação entre três e Python 2.7.x
Naz Mir
3
Se eu já instalei o python 2.7 por meio do homebrew , há algo que eu deva cuidar do pyenv ? Posso instalar outro python 2.7 através do pyenv ?
Drake Guan
3
Sim, você pode instalar outro python 2.7 através do pyenv. Ele instalará esse python nas versões $ PYENV_ROOT /. O outro python 2.7 instalado através do homebrew pode aparecer como "sistema" quando você executa "versões pyenv".
moliware
5
Eu tive que adicionar eval "$(pyenv init -)"ao meu .profile / .zshrc para fazer o pyenv funcionar.
Rohmer
5
@ilciavo, você pode ter que adicionar eval "$(pyenv init -)"ao seu ~ / .bash_profile
Jojanzing
77

Você pode ter as duas versões instaladas ao mesmo tempo.

Para Homebrew> = 1.5.0:

Desde 1º de março de 2018, a pythonfórmula será atualizada para o Python 3.x, enquanto uma nova python@2fórmula será adicionada para o Python 2.7, especificamente.

Veja o anúncio de alterações aqui ou o documento final sobre o uso do Homebrew for Python aqui .

Para Homebrew mais antigo:

Para Python 2.x:

brew install python

Para Python 3.x:

brew install python3

Agora, você terá as duas versões instaladas em sua máquina. Quando você deseja usar a versão 2, use o pythonexecutável. Quando você quiser usar a versão 3, use o python3executável.

Lenin Raj Rajasekaran
fonte
a questão é sobre o uso de ambos
meduz 5/05
obrigado pela atualização! Eu segui uma rota semelhante, mas tive problemas em ter que definir PYTHONPATHa cada alteração ... alguma idéia? além disso, pyenvé ótimo.
meduz
9
Além disso, observe que, tendo python2 e python3 lado a lado, esse python aponta para python2 e python3 aponta para python3 conforme o esperado. No entanto, um grande problema é que o pip não aponta para o pip2 como seria de esperar. Na verdade, ele aponta para o pip3 (assim como o pip3 obviamente). Para usar o pip2, use explicitamente o pip2. Um pouco inconsistente com o sufixo não número de ponto pitão a 2, mas não o sufixo número de pontos pip a 3.
JD
5
Isso atrapalha os executáveis ​​comuns, como o pip. O python3 substituirá o python2 pip nesse caso e esse será o comando "pip" padrão
kissgyorgy 15/16
1
Em resposta ao comentário do @ kissgyorgy: eu tive esse problema, o último comentário sobre esse problema o resolveu para mim github.com/Homebrew/legacy-homebrew/issues/50607 , executando e python3 -m pip install -U --force-reinstall pipdepois refazendopython -m pip install -U --force-reinstall pip as pipreferências ao Python 2 pip.
Harry
11

Atualmente, o Homebrew fornece duas fórmulas diferentes para Python 2 e 3. brew install pythoninstala python3 e brew install python@2instala python2. Mais detalhes nos documentos do Homebrew:

https://docs.brew.sh/Homebrew-and-Python

Se você atualmente possui o 2.x instalado via Homebrew, o Homebrew enviará uma mensagem como:

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

Se você executar:

brew upgrade python

você deve ser capaz de fazer:

python --version

e

python3 --version

Para ver quais versões do Python 2.xe 3.x instalaram.

Guilherme Garnier
fonte
6

Como alternativa, você provavelmente pode simplesmente digitar "python3" para executar a versão mais atual do python3.xe "python" ou "python2" para executar a versão 2.x mais recente instalada.

Fred Mitchell
fonte
4

Existem maneiras de usar os dois, mas a solução mais simples hoje é usar pyenv . O pyenv permite alternar facilmente entre as versões. Aqui está o que eu fiz para configurar:

PASSO 1:

Remova todos os pythons do seu mac

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

Remova o seguinte de ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

e também o seguinte de ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

PASSO 2 :

Instale o pyenv e as versões python necessárias

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

PASSO 3 :

adicionar pyenv inita bash_profileoubashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

PASSO 4 :

Verifique o que foi instalado

pyenv versions
  • sistema (definido por /Users/ishandutta2007/.pyenv/version)

    2.7

    3.7.0

PASSO 5:

Escolha um padrão

pyenv global 3.7.0

Quando um projeto precisar de uma versão mais antiga, basta acessar sua pasta raiz e executar

pyenv local 2.7
ishandutta2007
fonte
1

Use asdf !

Balada de asdf

Era uma vez uma linguagem de programação.
Havia muitas versões.
Então, as pessoas escreviam um gerenciador de versões para ele.
Para alternar entre versões de projetos.
Diferentes, antigas, novas.

Então vieram mais linguagens de programação
Então vieram mais gerenciadores de versão
E muitos comandos para eles

Eu instalei muitos deles
, aprendi muitos comandos

Então eu disse, apenas mais um gerenciador de versão,
que eu escreverei

Então, veio outro gerenciador de
versões asdf version manager - https://github.com/asdf-vm/asdf

Um gerenciador de versões tão extensível
para o qual qualquer um pode criar um plug-in
Para suportar seu idioma favorito
Não é mais necessário instalar mais gerenciadores de versão
Ou aprender mais comandos

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins

Matt Schlobohm
fonte
Parece-me que essas não são ferramentas concorrentes, mas a mesma ferramenta, implementada uma vez (e às vezes mais de uma vez) por idioma. É como por que precisamos de algo como o LSP também, IMHO.microsoft.github.io/language-server-protocol/overview
Matt Schlobohm
1

Eu pensei que tinha o mesmo requisito - para alternar entre versões do Python -, mas consegui tudo o que precisava com apenas o Python3.6 construindo a partir do código-fonte em vez de usá-lo homebrew.

git clone https://git.<theThingYouWantToInstall>

Dependendo do repositório, verifique se o arquivo MAKE já está configurado para esta opção.

rustyMagnet
fonte
-3

Ok, eu estava lutando com minha instalação de fermentação do Python3, porque não tinha o pip3

sudo pip3 command not found

e eu fiz

brew uninstall --force --ignore-dependencies python3

e instalei o Python regular 3.6.2 da distribuição oficial e, em seguida, tive o pip3 e todos os componentes estavam ok.

Vladimir Stazhilov
fonte
O OP está perguntando sobre a instalação de ambos.
Ajeet Ganga