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

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

Você pode instalar um pacote em todo o sistema:

$ sudo apt install python-is-python3

Ver advertências:pacote python-is-python3 no Ubuntu 20.04 - o que é e o que realmente faz?

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 source ~/.bashrc ou source ~/.bash_aliases.

Por exemplo:

$ python --versionPython 2.7.6$ python3 --versionPython 3.4.3$ alias python=python3$ python --versionPython 3.4.3

Para contornar o alias, use o command comando integrado:

$ command python --versionPython 2.7.6

Outra maneira de contornar o alias é usar \ antes do comando.

$ \python --version Python 2.7.6

Para desativar o alias no shell atual, use o unalias comando integrado:

$ unalias python$ python --versionPython 2.7.6

No Ubuntu 20.04+ basta instalar o python-is-python3 pacote:

sudo apt install python-is-python3

Além disso, você pode impedir que o Python 2 seja instalado como uma dependência de algo no futuro com apt-mark hold:

sudo apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 

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


Do Ubuntu wiki:

Para Ubuntu e Debian, temos continuo projecto Milenio para tornar o Python 3 o padrão, preferiu a versão Python nas distros.

O que isso nao significar:

  • /usr/bin/python vai apontar para Python 3. Não, isso não vai acontecer (excepto PEP 394 advoga de outra forma, o que é duvidoso para o futuro previsível). /usr/bin/python e /usr/bin/python2 irá apontar para Python 2.7 e /usr/bin/python3 apontará para a versão mais recente 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 suportado e disponível no Ubuntu por um longo tempo, dado que PEP 373 promete suporte de manutenção de correção de bug upstream até 2020.

Não é recomendável alterar o link simbólico por causa de outras dependências de pacote, mas elas "têm metas de projeto em andamento para tornar o Python 3 a versão padrão e preferida do Python nas distros".


Para uso CLI, como @ Radu Radeanu, Eu recomendaria colocar um alias no usuário ~/.bashrc, .bash_aliases arquivo (os diferentes arquivos, incluindo ~/.bash_profile, são carregados pelo menos uma vez, são principalmente para fins organizacionais, mas podem variar de acordo com a plataforma). Jiboia ambientes virtuais também funciona bem.

Exemplos de Alias:

alias python=python3

ou

alias python='/usr/bin/python3'

Os Scripts ainda devem usar algo como #!/usr/bin/env python3 para compatibilidade cruzada.

Mear env é bom para uso misto com ambientes virtuais.

Nota (graças a @wjandrea): aliases fazem parte do tempo de execução do bash, não do ambiente do Usuário. Portanto, eles não estão disponíveis para o shebang (#!). Se você preferir o alias python = python3, então alguns program.py sem um shebang poderia ser executado invocando o interpretador com alias como este python program.py. Aliasing também pode ser útil para sistemas com várias versões do python3 como 3.4 e 3.6 juntos.

Update: esta é a maneira errada, 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 & quot;sem alternativas para python & quot;, Em seguida, configurar uma alternativa você mesmo com o seguinte comando:

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

Alterar o caminho /usr/bin/python3 para sua versão python desejada de acordo.

Ubuntu, e o resto das distros Linux para esse assunto, ainda são amplamente dependentes do Python 2.7 para uma série de aplicativos e comandos. Se você alterar a referência padrão de "python" para Python 3.x, então uma série de funções Python começarão a lançar erros de afirmação.

Por exemplo, no Ubuntu, ' pip ' para um não seria mais executado corretamente, a menos que você editasse diretamente o arquivo e alterasse o shebang para referência '#!/usr/bin / env python2.7'. No RHEL (Red Hat Enterprise Linux), como Red Hat, Fedora e CentOS, o comando 'Yum' também depende 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 afirmaçã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 ' em seu Python 3.x arquivos.

Fazer

cd ~gedit .bash_aliases

em seguida, escreva qualquer um

alias python=python3

ou

alias python='/usr/bin/python3'

Salve o arquivo, feche o terminal e abra-o novamente.
Link

Acho muito útil simplesmente remover /usr/bin /python e/usr/bin / pip. Isso força Todos os programas a confiar nos comandos" python2 "e" python3".

Embora alguns pacotes opcionais e desatualizados dependam de #!/usr/bin/python para funcionar, Prefiro enviar patches para esses programas do que continuar cometendo erros estranhos e às vezes difíceis de depurar.

cat > /usr/local/bin/py << 'EOF'#!/bin/dashpython3 "$@"EOF

(desde que você tenha permissão de gravação para / usr / local / bin) da mesma forma

cat > /usr/local/bin/pyi << 'EOF'#!/bin/dashpython3 -i "$@"EOF

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

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 exigem que o / usr / bin / python seja compatível com o python 2.x.

Em outra nota, qualquer pessoa que vem aqui porque está tentando aprender sobre como tornar o 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).

@wjandrea, sim, mesmo em um ambiente virtual, ‘python’ deve ser mantido como significando ‘python2’. Quis dizer meu comentário como uma maneira de ter uma versão Python específica do aplicativo em vez de tentar contornar o Python do sistema.

Ah, agora eu tenho o que você quis dizer com upgrade… Na verdade, os desenvolvedores do Ubuntu estão trabalhando nisso: Python/3 - Ubuntu Wiki " é uma meta de lançamento para o Ubuntu 14.04 LTS ter apenas Python 3 nas imagens de CD da área de trabalho."

Em referência ao Aviso da soulsource no topo, veja PEP 394 que padroniza Convenções de nomenclatura para executáveis Python coexistentes e nas quais os programadores e mantenedores de pacotes Python confiam (e devem).

sudo apt install python-is-python3 ' Para Ubuntu 20.04+)

@ soulsource, sim, estou ciente disso . é por isso que perguntei se existe uma opção de" atualização " disponível ou não.

Acho que a resposta de Radu Rădeanu já está bem próxima da solução ideal. Ele se aplica apenas a um usuário e está em vigor apenas para executar diretamente o python digitando o comando python, não afetando programas com um#!/ usr / bin / python shebang.

@ soulsource é isso que estou procurando! :slight_smile: obrigado!

@ Kevin acabei de tentar usar um virtualenv, mas assim que abri o Gedit do terminal, recebi vários erros porque seus plug-ins parecem precisar do Python 2. Problemas semelhantes podem acontecer para qualquer outro software que dependa do comando python sendo Python 2.