Por que o python 3 não é o binário Python padrão?

38

Eu digito python em uma janela de terminal. Eu recebo o Python 2.7 e não o Python 3.5. De acordo com os documentos, o Python 3.5 deve vir pré-carregado.

    
por givonz 25.05.2016 / 03:01

5 respostas

54

Eu não sei o que "docs" você está lendo nem o que eles dizem, mas o /usr/bin/python é apenas um link simbólico para a versão padrão do python, nesse caso 2.7, que é o resultado de apenas digitar python no terminal. Este é o resultado de PEP 394 que define que

  
  • por enquanto, todas as distribuições devem garantir que python se refira ao mesmo destino que python2 .
  •   

type python e file /usr/bin/python confirmarão isso.

A razão para este arranjo, além da convenção, é que o pacote fonte python-defaults no Xenial é a versão 2.7.11 , então o link simbólico do python aponta para esta versão.

Para usar o python 3 você precisa ser explícito e digitar python3 na linha de comando, o que é recomendado caso você precise de uma versão específica, isso também pode ser feito com o python 2, digitando python2 . O Ubuntu inclui as versões do python 2 e 3 por padrão em todas as versões atuais.

Existem planos para migrar tudo para o python 3 e marcá-lo como padrão.

    
por Braiam 25.05.2016 / 04:03
10

Para obter o Python 3.5 REPL ou executar um script compatível, digite python3 . Isso é para manter a compatibilidade com todo o python legado 2.x (que sempre foi e continuará vinculado a python ).

O traço poderia encontrar python se você configurasse um arquivo .desktop para ele (em ~/.local/share/applications/ ), para abrir um terminal e iniciar o REPL, por exemplo. Não há um ambiente GUI REPL padrão para python, e as expectativas normais da interface são de que o usuário vá para o terminal.

A conversa do python 3.5 sendo padrão é dos mantenedores que portam todos os scripts do sistema do python 2.x para o python 3.x, não que o python 3 substituirá o python 2 em todos os casos.

    
por Andrew Keech 25.05.2016 / 03:16
3

As versões 2.x, 3.x do Python estão disponíveis. se você chamar python como está apontado para o python 2.x, ele irá carregar o python 2.x

Abaixo, a imagem irá ajudá-lo.

    
por Ten-Coin 25.05.2016 / 03:18
2

O Python 3.x deve funcionar com 16.04 - Na verdade, definitivamente funcionará. Eu tenho o Ubuntu 14.04 e tenho o Python 3.4.3 - Tudo que você precisa fazer para testá-lo é digitar python3 e ele deve informar qual versão você está usando.

    
por Danny 25.05.2016 / 03:24
1

Você assume que o Python padrão deve estar disponível como python . Essa suposição está errada.

Em um sistema que vem com o Python 3 "pré-carregado" e sem o Python 2, haverá apenas python3 e não python .

O código escrito para o Python 3 deve sempre procurar por um intérprete chamado python3 . O código escrito para o Python 2 procurará, historicamente, python .

Pode chegar um momento no tempo, possivelmente daqui a décadas, onde quase ninguém se lembra do Python 2, quando python pode começar a se referir a python3 . Isso seria puramente por conveniência, e pode e não deve ser feito prematuramente, se é que pode ser feito! Não há pressa, devido ao seguinte impacto:

Os sistemas "atuais" não terão conhecimento de python2 , apenas python , por isso faz todo o sentido manter o código do Python 2 procurando por python . Esta é a razão pela qual python deve se referir ao Python 2 para "contanto que o código do Python 2 exista".

Novo código escrito para o Python 2, se isso fizer sentido, pode perfeitamente procurar por python . Ele também pode procurar python2 , se for destinado a ser executado somente em sistemas compatíveis e bem preparados do Python 3 (que devem oferecer esse link).

O benefício do código do Python 2 usando python2 seria que ele não precisa de toques extras uma vez python começa a se referir a python3 , o que pode nunca acontecer, ou quando python desaparecer, o que pode ou pode não acontece. (Isso pode se tornar realidade, se o código do Python 2 desaparecer depois que o hipotético Python 4 se tornar popular com seu intérprete python4 . - Porque permitir que ele aponte para python3 ou python4 seria confuso.)

    
por Robert Siemer 11.07.2017 / 16:28

Tags