Como alternar com segurança para python3 como padrão após a atualização para o Ubuntu 18.04

13

Como python3é a versão python padrão no Ubuntu 18.04 e python2não será enviada por padrão em uma nova instalação do Ubuntu 18.04, como posso tornar o python3padrão após uma atualização para o Ubuntu 18.04 (a partir de 16.04). Atualmente, após a atualização, python2ele ainda é padronizado (por exemplo, o pythoncomando direciona para python2etc.). No entanto, a remoção do pythonpacote resultará na remoção de muitos pacotes que dependem dele, portanto, essa não é uma opção aqui.

Idealmente, quero remover a python2dependência o máximo possível. Talvez o processo de atualização possa ser projetado de forma a verificar todos os pacotes, se eles ainda dependem realmente de python2dependências e, assim, coletar todas as python2dependências que poderiam ser substituídas por uma python3dependência equivalente (que será resolvida pela atualização então).

zazi
fonte
Por favor, verifique a nova redação. Anterior era pouco claro sobre o que você estava perguntando. Tentou resolver isso a partir do título da sua postagem.
Juan Antonio
Muito obrigado pela edição @JuanAntonio. A maioria das edições parece boa. Apenas fiz algumas correções adicionais para colocar essas perguntas na direção certa.
Zazi
Isso é seguro, qual é o fim de remover o python2 ou deixá-lo. Se estiver lá, então algo precisa!
George Udosen
2
De fato, o python 2 não é instalado por padrão no 18.04, portanto, se você o tiver, é porque você instalou algum pacote adicional (ou fez uma atualização com os referidos pacotes já instalados), que ainda requer o python 2. Esse 3.x é o padrão não significa que não há mais coisas usando 2.x no arquivo morto. O 20.04 certamente não terá mais o python 2.x, pois não será mais suportado pelo upstream nesse momento.
Dobey 15/08
"qual é o fim da remoção do python2" - um sistema bastante limpo. minhas instalações python foram quebradas de alguma forma após a atualização.
Zazi

Respostas:

13

Este post é um pouco antigo, mas acredito que existe uma alternativa melhor: enter update-alternatives. A seguir, você definirá o /usr/bin/pythonpadrão para 2,7, mas terá 3,6 disponíveis quando desejar:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 20
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 10

A prioridade mais alta aqui é usada como a opção "automática", /usr/bin/pythonmas você pode alternar facilmente executando sudo update-alternatives --config python.

Joshua Whitley
fonte
1
boa resposta. no meu caso, python2.7 estava sendo instalado pelo nodejs / npm e de alguma forma definido como padrão para python. Eu costumava sudo update-alternatives --remove-all pythonremover todos os python e, em seguida, adicionei o único python que desejo usar sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 10. Também é bom saber é sudo update-alternatives --list pythonver o que é o quê.
## phshem #
1
você também pode querer fazer sudo apt install python3-pipesudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 10
Daniel
10

Para remover completamente o python2, é necessário limpar o python2.x-minimalpacote feito por

sudo apt purge python2.x-minimal

substituindo x pela versão exata do python 2 no seu sistema. Mas certifique-se de verificar quais outros pacotes foram removidos, pois você pode ter carregado pacotes que ainda dependem do python 2, mesmo após a atualização, e esses pacotes também serão desinstalados e deixarão de funcionar.


Não existe um interpretador python 'padrão' porque ele depende apenas de qual arquivo real /usr/bin/pythonaponta; para mudar isso para python, use o lncomando para atualizar o link; por exemplo, digamos que você queira que aponte para python 3.6.

sudo ln -sfn /usr/bin/python3.6 /usr/bin/python

Como alternativa, se você deseja apenas isso para o usuário, pode configurá-lo como seu alias no seu .bashrc, para fazer isso, abrir ~/.bashrcno seu editor de escolha e adicionar a seguinte linha

alias python='python3.6' 
Amith KK
fonte
"como você pode ter carregado pacotes que ainda dependem do python 2 mesmo após a atualização" <- sim, e minha intenção é livrar-se dessa dependência porque ela não é realmente necessária, pois o Ubuntu 18.04 os executa sem python2dependência usando seu padrão python3dependências / pacotes.
Zazi
1
Isso é seguro, qual é o fim de remover o python2 ou deixá-lo. Se estiver lá, então algo precisa!
George Udosen
0

No meu 16.04 /usr/bin/pythoné apenas um link para, /usr/bin/python2.7portanto, presumo que você precisaria alterar esse link para apontar para /usr/bin/python3.x(com o suficiente, é xclaro).

xenoid
fonte
você também pode apontar /usr/bin/pythonpara /usr/bin/python3, que é um link para a versão mais recente python3 instalado. Ou apenas um apelido ou uma função no seu ~/.bashrc. Toneladas de opções ;-)
Kev Inski
não, acho que isso não é realmente o que quero fazer aqui. Eu quero livrar-se python2no meu sistema (como é o caso padrão ao instalar um novo Ubuntu 18.04, onde python3é padrão e python2não é instalado por padrão)
Zazi
2
@zazi Eu não recomendaria a purga python2. Parece que muitos outros pacotes dependem disso. Você tem alguma desvantagem ao se manter python2instalado?
Kev Inski
Não tenho nenhuma desvantagem em manter python2instalado, se realmente necessário, mas quero definir claramente python3como padrão, ou seja, remover o python2mais rápido possível (e uma instalação limpa do Ubuntu 18.04 demonstra que isso é possível).
Zazi
De fato faz.
precisa saber é o seguinte