Trocando a versão do Python no macOS

Olá,

Ao instalar o macOS ele traz diversas linguagens e seus interpretadores já pré-instalados. Ele traz o Python, o PHP, o Ruby, entre outros.

Mas talvez você tenha tido o mesmo problema que eu. Eu precisava fazer com que os comandos que eu tenho que chamam o Python, passassem a chamar uma outra versão do Python, sem que eu tivesse que mudar todos os meus scripts. Seria fácil fazer um alias ou mudar os scripts para python2 ou python3, mas essa com certeza não era pra mim a melhor solução.

A primeira coisa que fiz foi instalar as versões que eu queria. Então usei o Brew para me ajudar com isso. Instalei rapidamente o Python 2 e 3 atualizados com os comandos no Terminal:

brew install python
brew install python3

Caso você queira saber se está funcionando digite:

python2 --version
python3 --version

O Terminal deverá exibir as versões após a execução das linhas acima.

Após isso ainda não fizemos nada, apenas deixamos instaladas as versões que queremos.

É totalmente desaconselhável remover a versão que já vem no macOS, isso deve quebrar algumas coisas que dependem disso.

A primeira coisa a se fazer é definir a ordem de como o sistema irá procurar o comando “python” no macOS. Para isso edite o arquivo com o nano, assim:

sudo nano /etc/paths

E verifique se a primeira linha do arquivo está como:

/usr/local/bin

Caso não esteja, remova ela de onde estiver e coloque na primeira linha do arquivo.

Isso fará com que os “binários” sejam procurados primeiramente na pasta “/usr/local/bin“, dando preferência aos “binários” e links simbólicos dentro desta pasta.

Agora tudo o que precisamos fazer é criar um link simbólico dentro de “/usr/local/bin” que tenha o nome “python” e aponte para a nossa versão do Python que queremos (2 ou 3, depende da sua necessidade).

Para isso execute a seguinte linha para o Python 2:

ln -s /usr/local/bin/python2 /usr/local/bin/python

E para o Python 3 digite no terminal:

ln -s /usr/local/bin/python3 /usr/local/bin/python

Caso você já tenha criado anteriormente algum link simbólico e deseja trocar, apague o link simbólico atual com a seguinte linha:

rm -f /usr/local/bin/python

Não precisa executar estas linhas como root/sudo, pois seu usuário já tem acesso a ela.

Caso você queira atualizar o Python, basta executar o Brew com o parâmetro upgrade, assim:

brew upgrade python
brew upgrade python3

Ao terminar tudo, reinicie seu terminal para que as alterações façam efeito.

 

Obrigado e até o próximo post pessoal.

4 comentários em “Trocando a versão do Python no macOS”

  1. Primeiramente, muito obrigado por colocar o post, achei muito esclarecedor!
    Em segundo lugar, tenho uma questão para resolver. Bom eu comprei um MacBook Pro o ano passado , pois todos no laboratório usavam, contudo eu instalei o anaconda e ao fazer isso, ele “dominou” o sistema, então se eu der o comando:
    $ python #ou python2
    # Ele vai abrir uma versão do anaconda, com a seguinte saída :
    Python 2.7.16 |Anaconda, Inc.
    funciona praticamente normal, mas eu precisei instalar o root cern para fazer uso de módulos do pyroot, e o que acontece é que essa versão do anaconda não é compatível e emite a seguinte resposta:
    >>> import ROOT #ROOT CERN instalado e funcionando
    Fatal Python error: PyThreadState_Get: no current thread
    Abort trap: 6
    De maneira que não consigo trabalhar na minha tese, então eu desinstalei o anaconda, mas o conda continuou no sistema e dominando python, gostaria de saber como abrir o python sem ser o da versão do anaconda (não pode ser o python3), ou desinstalar o conda, pois comandos de desisntalação não funcionam. Sabe alguma solução para meu caso, se sim, responde aqui ou me envia um e-mail para [email protected] e desde já agradeço!

    1. Olá,

      Digita no terminal “which python” para você ver o caminho atual do python que está sendo apagado e depois remove ele com “rm -rf [CAMINHO RETORNADO]”.

      Depois siga os passos deste tutorial para setar o python 2 ou 3 como link simbólico.

      Abs.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *