Disparidade nas versões dos pacotes do Python 2 e do interpretador do Python 2

3

Eu não entendo muito bem o aparente desacordo nas versões entre os vários pacotes do Python 2 e o interpretador do Python 2 no meu sistema Ubuntu 16.04.

Rodando

$ readlink -e $(which python python2)
/usr/bin/python2.7
/usr/bin/python2.7

$ python --version && python2 --version
Python 2.7.12
Python 2.7.12

me diz que python e python2 são links simbólicos para python2.7 e a versão do interpretador do Python 2 no meu sistema é Python 2.7.12 . Até aí tudo bem, nada de surpreendente.

Rodando

$ dpkg -s python | grep Version
Version: 2.7.11-1

me diz que a versão do pacote python é 2.7.11-1 , que discorda da versão do interpretador do Python 2.

Por outro lado, executando

$ dpkg -s python2.7 | grep Version
Version: 2.7.12-1~16.04

me diz que a versão do pacote python2.7 é 2.7.12 , que concorda com a versão do interpretador do Python 2.

Dado que a versão do interpretador do Python 2 é 2.7.12 , o intérprete é fornecido apenas pelo pacote python2.7 ? Em caso afirmativo, o que o pacote python faz se não fornecer o interpretador que o sistema usa atualmente?

    
por edwinksl 17.09.2016 / 03:28

2 respostas

4

O intérprete /usr/bin/python2.7 é fornecido pelo pacote python2.7-minimal , como você pode ver com apt-file search /usr/bin/python2.7 . O pacote python é o que é chamado de metapackage : como a instalação do Python é dividida em vários pacotes, o pacote python fornece uma maneira simples de instalar todos esses pacotes de uma só vez. Se alguém precisar apenas do mínimo, poderá instalar apenas o pacote python2.7-minimal .

    
por fkraiem 17.09.2016 / 14:56
1

Por padrão, você tem várias versões do Python instaladas. Se um programa exigisse uma versão específica, o autor chamaria essa versão pelo nome do caminho.

Se você não tiver a versão necessária do autor, poderá instalar essa versão específica. Você ainda pode manter sua opção de versão padrão, que /usr/bin/python simbólico vinculou ao número da versão. No seu caso, provavelmente está vinculado a /usr/bin/python2.7 .

Você pode visualizar suas versões instaladas com:

$ ls -ld /usr/bin/python*

Minha resposta é principalmente abordar a última parte da sua pergunta, If so, what does the python package do if it doesn't provide the interpreter that the system currently uses? .

Quando você executa python , ele está pesquisando seu caminho e localizando /usr/bin/python , que está vinculado a /usr/bin/python . Então você está realmente verificando a versão de /usr/bin/python2.7 .

Além disso, em algumas ocasiões, há discrepâncias na saída da versão , dependendo do método verificado. Como neste caso, verificar através do programa real e verificar através da embalagem de distribuição. Quando isso ocorrer, o carimbo de versão no programa real provavelmente será mais preciso.

Outra maneira de verificar a versão atual do interpretador python é executá-lo a partir da linha de comando:

$ python

Saída:

Python 2.7.12 (default, Jul  1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 


$ python2.7

Saída:

Python 2.7.12 (default, Jul  1 2016, 15:12:24) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
    
por L. D. James 17.09.2016 / 04:20