
Instalei o python3.7, mas não tenho certeza de como torná-lo o python padrão.
Veja abaixo:
~/Documents/robosuite$ python3.7
Python 3.7.1 (default, Oct 22 2018, 11:21:55)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
KeyboardInterrupt
>>>
~/Documents/robosuite$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
Quero que python3.7 apareça quando eu usar o comandopython3
Responder1
A solução simples é editar .bashrc
e colocar esta linha:
alias python3=python3.7
Sempre que você escrever, python3
ele será substituído por python3.7
.
Ou você pode usar o comando update-alternatives
preferido, ou seja:
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2
Então aqui python3.7
terá maior prioridade python3.6
. Então use:
sudo update-alternatives --config python3
Pressione a tecla Enter se estiver satisfeito
Responder2
Eu gostaria de expandiruma resposta anteriorjá que as duas abordagens apresentadas não são equivalentes e uma delas pode até quebrar o sistema. A questão é que há duas coisas diferentes que alguém poderia tentar fazer "alterando a versão padrão do python".
Resumo rápido
Adicionar
alias python3=python3.7
para .bashrc
.
Fazernãouse update-alternatives
para alterar sua versão padrão do python, pois isso interromperá os aplicativos do sistema.
Detalhes adicionais
Apelido do Bash
A primeira é que, para um shell interativo, basta abrir facilmente o python desejado escrevendo
$ python
ou
$ python3
Isso é feito adicionando a linha
alias python3=python3.7
para .bashrc
. Se alguém estiver usando outro shell, adicione-o ao arquivo de configuração apropriado. Isso também tem a vantagem de que, se causar problemas por qualquer motivo, pode-se simplesmente remover a linha incorreta .bashrc
e reiniciar o terminal.
update-alternatives
A segunda coisa que se pode querer dizer com "alterar a versão padrão do python" é alterar a versão padrão do python paratodosprogramas, incluindo aqueles não iniciados a partir de um shell interativo. Este é o resultado da corrida
$ sudo update-alternatives --config python3
No entanto, se você executar isso em uma instalação limpa do Debian/Ubuntu, notará que o comando retorna
update-alternatives: error: no alternatives for python3
mesmo se você tiver várias versões do python 3 instaladas via apt
. Há uma razão muito boa para isso.
O problema com isso é que muitos aplicativos de sistema usam python e, dependendo da distribuição exata, muitos usam python 3. Alterar qual versão é chamada pelo comando python3
globalmente forçará esses aplicativos a usar esta versão. Embora diferentes versões do python 3 sejam amplamente compatíveis, ainda existemrecursos movidos e removidos entre versões. Se um aplicativo do sistema usar esses recursos, mudar python3
para iniciar uma versão mais recente interromperá o aplicativo.
Teste
Criei uma nova instalação do Ubuntu 18.04 em uma VM. Adicionar o alias do bash não causou problemas imediatos.
Usar o update-alternatives
método causou problemas com o apt
. Especificamente, eu consegui
ModuleNotFoundError: No module named 'apt_pkg'
Consertando seu sistema se você executou o update-alternatives
método
Se corremos update-alternatives
e quebramos apt
, ainda podemos consertar o sistema. Durante meus testes, o terminal ainda pôde ser aberto. Pode-se voltar ao python padrão executando
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.X 1000
onde 3.X é a versão original do python 3 do seu sistema e 1000 é apenas uma alta prioridade para garantir que esteja no topo. Então, pode-se correr
$ sudo update-alternatives --config python3
e certifique-se de que o python do sistema original esteja selecionado. Reinicie o sistema e ele voltará ao normal.
Responder3
$ sudo su
$ update-alternatives --install /usr/bin/python python /usr/bin/python3 1
... quando já python3.7
estiver instalado
Responder4
Para máquinas que não possuem o comando update-alternatives, pode-se fazer uma solução rápida e suja como
sudo ln -sf `which python3.7` `which python3`
Normalmente (pelo menos em todos os casos que vi), python3/python2/python são apenas links simbólicos para o executável python de uma versão específica. Alterar este link simbólico deve alterar o 'python padrão'