Resumo rápido

Resumo rápido

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 .bashrce colocar esta linha:

alias python3=python3.7

Sempre que você escrever, python3ele será substituído por python3.7.

Ou você pode usar o comando update-alternativespreferido, 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.7terá 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-alternativespara 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 .bashrce 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 python3globalmente 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 python3para 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-alternativesmétodo causou problemas com o apt. Especificamente, eu consegui

ModuleNotFoundError: No module named 'apt_pkg'

Consertando seu sistema se você executou o update-alternativesmétodo

Se corremos update-alternativese 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.7estiver 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'

informação relacionada