Questão Como fazer o comando do programa 'python' executar o Python 3?


o python comando do programa executa o Python 2. O Python 3 pode ser executado usando o python3 comando. Como o Python 3 pode ser executado usando o python comando?


224
2017-07-17 08:04


origem


Apenas um aviso: Não tente alterar o link simbólico / usr / bin / python para apontar para python3 em vez de 2.7. Muitos programas disponíveis nos repositórios do Ubuntu requerem que o / usr / bin / python seja compatível com o python 2.x. - soulsource
@soulsource, sim, estou ciente disso. É por isso que eu perguntei se há uma opção "upgrade" disponível ou não. - Giri
Ah, agora eu entendi o que você quis dizer com atualização ... Na verdade, os desenvolvedores do Ubuntu estão trabalhando nisso: wiki.ubuntu.com/Python/3 "É uma meta de lançamento para o Ubuntu 14.04 LTS ter apenas o Python 3 nas imagens de CD de desktop." - soulsource
Em outra nota, qualquer um que venha aqui porque está tentando aprender sobre como tornar Python 3 seu padrão, pode, em vez disso, encontrar uso na pesquisa de ambientes virtuais (por exemplo, virtualenv) ou contêineres (por exemplo, LXC ou Docker). - Kevin
Em referência ao aviso do soulsource no topo veja PEP 394 que padroniza convenções de nomenclatura para executáveis ​​Python coexistentes e sobre quais programadores e mantenedores de pacotes Python fazem (e devem) confiar. - David Foerster


Respostas:


Uma maneira simples e segura seria usar um alias. Coloque isso em ~/.bashrc ou ~/.bash_aliases Arquivo:

alias python=python3

Depois de adicionar o acima no arquivo, execute o comando abaixo:

source ~/.bash_aliases or source ~/.bashrc

Por exemplo:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

Para contornar o pseudônimo, use o command comando interno:

$ command python --version
Python 2.7.6

Outra maneira de contornar o pseudônimo é usar \ antes do comando.

$ \python --version 
Python 2.7.6

Para desabilitar o alias no shell atual, use o unalias comando interno:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



então não há opção "upgrade" .. ?? - Giri
@Giri Você disse que tem python3. O que para uma atualização? - Radu Rădeanu
na verdade eu quero apagar 2.7 e substituí-lo por 3.3. Parece que é uma má ideia por agora .. - Giri
+1 não há motivo para purgar 2.7 para poder trabalhar com 3.3. Como muitos softwares ainda dependem de 2.7; Apenas continue demorando. - don.joey
@begueradj An alias é totalmente diferente de um link simbólico. - Radu Rădeanu


[Junho de 2016] O local recomendado para informações sobre a transição é oficial Python do Ubuntu página.


De Wiki do Ubuntu:

Tanto para o Ubuntu quanto para o Debian, temos em progresso projeto objetivos para tornar o Python 3 a versão padrão preferida do Python nas distros.

O que isso não significar:

  • /usr/bin/python irá apontar para o Python 3. Não, isso não vai acontecer (a menos que PEP 394 defende o contrário, o que é duvidoso para o futuro previsível). /usr/bin/python e /usr/bin/python2 apontará para o Python 2.7 e /usr/bin/python3 apontará para a última versão suportada do Python 3.

  • O Python 2 será removido do arquivo. Não, isso não vai acontecer. Esperamos que o Python 2.7 permaneça com suporte e disponível no Ubuntu por um bom tempo, já que PEP 373 promete suporte de manutenção de correção de bugs upstream até 2020.

Não é recomendado alterar o link simbólico devido a outras dependências de pacote, mas eles "têm metas de projeto em andamento para tornar o Python 3 a versão padrão preferida do Python nas distros".


Para uso do CLI, como @Radu Rădeanu, Eu recomendaria colocar um alias no usuário ~/.bashrc, .bash_aliases arquivo (os arquivos diferentes, incluindo ~/.bash_profile, são todos carregados juntos e são simplesmente para fins organizacionais). Python ambientes virtuais também funciona bem.

Tal como:

alias python=python3

ou

alias python='/usr/bin/python3'

Os scripts podem começar com algo como:

#!/usr/bin/env python

ao invés de

#!/usr/bin/python3

Eu ainda recomendaria usar #!/usr/bin/python3 (ou #!/usr/bin/env python3) em scripts para compatibilidade cruzada mais simples.

Usando env é bom para uso misto com ambientes virtuais.


68
2018-06-02 16:31



Isso parece estar desatualizado agora: eles planejaram remover o python2 no Xenial, mas não o fizeram. - OrangeDog
@OrangeDog, obrigado pela atualização. Sim, a página wiki que eu citei está marcada como desatualizada, já que mais progresso tem sido feito nos últimos dois anos por mudar para apenas o Python 3. A nova página para acompanhar essa progressão é a oficial Página do Ubuntu Python. - Kevin
A página "mais recente" também está desatualizada em relação aos planos para o Xenial. - OrangeDog
Eu não diria que está "desatualizado" tanto quanto "ele não foi atualizado recentemente". Ainda parece ser o local atual para manter posts sobre isso. No entanto, nos comentários aqui, eu apreciaria quaisquer outras fontes recentes que alguém possa encontrar. Adicionando mais fontes à minha resposta, por que não fazer a mudança apenas python, não é relevante até que a conversão esteja completa. Mesmo assim, pode se tornar um problema que não é. - Kevin
@OrangeDog é muito possível ter um sistema Xenial sem o Python 2 - Eu executei o Ubuntu Xenial Mate no Raspberry PI e ele tinha desktop, mas não python2.7. Ainda existem alguns pacotes opcionais (ou aqueles necessários para a experiência de desktop) que puxam o Python 2, então você pode tê-los. - Antti Haapala


Atualização: Este é o caminho errado, eu aprendi, já que Python2 e Python3 não são intercambiáveis.

Você pode tentar a ferramenta de linha de comando update-alternatives.

$ sudo update-alternatives --config python

Se você receber o erro "sem alternativas para python", configure uma alternativa com o seguinte comando:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Mude o caminho /usr/bin/python3 para a versão do python desejada.


8
2018-05-04 14:03



python2 e python3 não são alternativas. Não use update-alternatives para essa finalidade. - jobin
Por que eles não são? Um de vocês pode explicar por que update-alternatives não é adequado para python? É por causa de legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
alternativas são implementações diferentes para as mesmas funcionalidades. python2 e python3 não fornecem as mesmas funcionalidades. - Ely
Você pode fazer algo assim se tiver instalado manualmente (via ppa ou qualquer outro) outras versões do python3. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


O Ubuntu, e o resto das distribuições Linux, ainda dependem muito do Python 2.7 para vários aplicativos e comandos. Se você alterar a referência padrão de "python" para o Python 3.x, algumas funções do Python começarão a gerar erros de asserção.

Por exemplo, no Ubuntu, 'pip' para um não seria mais executado corretamente, a menos que você editasse o arquivo diretamente e alterasse o shebang para fazer referência a '#! / Usr / bin / env python2.7'. Nos sabores do RHEL (Red Hat Enterprise Linux), como Red Hat, Fedora e CentOS, o comando 'Yum' também é dependente do Python 2.7.

Meu ponto aqui é que você faria com que uma quantidade significativa de código começasse a lançar erros de asserção apenas para que você pudesse digitar 'python' no terminal para fazer referência ao Python 3.x.

Você está muito melhor usando o comando 'python3' no terminal e o shebang '#! / Usr / bin / env python3' nos arquivos do Python 3.x.


3
2018-03-25 15:43





Faz

cd ~
gedit .bash_aliases

então escreva

alias python=python3

ou

alias python='/usr/bin/python3'

Salve o arquivo, feche o terminal e abra-o novamente.
Ligação


1
2017-09-15 18:36





Você pode usar update-alternatives para fornecer versões diferentes de programas que podem ser necessários em momentos diferentes devido a problemas de compatibilidade.

Esta resposta É um bom exemplo de como configurar as coisas simultaneamente para manter diferentes versões do gcc / g ++, por exemplo.

apenas faça o mesmo com python2.7 e python 3.3


0
2017-10-18 13:19



Os usuários iniciantes podem não conseguir adaptar facilmente a resposta vinculada a uma situação diferente. Além de creditar a resposta anterior, seria bom definir os passos necessários para o Python. - chaskes
Aqui está uma boa solução passo a passo linuxconfig.org/… - woto


cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "$@"
<CTRL-D>

(desde que você tenha permissão de escrita para / usr / local / bin) Da mesma forma

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "$@"
<CTRL-D>

então você só digita py (e usa py em #! linhas) para o seu python escolhido.


0
2018-01-15 22:57





Você pode ligar simbolicamente /usr/bin/python para python3 com

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

Veja as outras respostas de porque você pode não querer fazer isso. O Ubuntu 18.04 não vem mais com o Python 2, então não deve ser tão ruim.


0
2018-05-03 21:01