Qual versão do Python eu tenho?

73

Como posso descobrir quais versões do Python eu tenho?

Estou usando o Ubuntu 14.04 (Trusty Tahr).

TechJhola
fonte
4
Além disso, uma maneira rápida de ver o que os binários python está instalado é:ls /usr/bin | grep python
Tejas Kale
11
@TejasKale Melhor executar ls /usr/bin/python*(ou ls /usr/bin/*python*se você realmente quiser arquivos com python qualquer lugar no nome). Dessa forma, lsainda formata sua saída para um terminal (e você obtém várias colunas e, com o lsalias padrão no Ubuntu, colorização).
Eliah Kagan

Respostas:

86

Você pode usar python -V(et al.) Para mostrar a versão do Python para a qual o pythoncomando resolve. Se é tudo o que você precisa, está feito. Mas ver todas as versões do python no seu sistema leva um pouco mais.

No Ubuntu, podemos verificar a resolução com readlink -f $(which python). Nos casos padrão no 14.04, isso simplesmente apontará para /usr/bin/python2.7.

Podemos encadear isso para mostrar a versão dessa versão do Python:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/usr/bin/python2.7: Python 2.7.6

Mas isso ainda está apenas nos dizendo qual é a nossa pythonresolução atual . Se estivéssemos em um Virtualenv (um sistema de gerenciamento de pilha Python comum), pythonpoderíamos resolver para uma versão diferente:

$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4

Esta é uma saída real.

O fato é que pode haver centenas de versões diferentes do Python secretadas no sistema, em caminhos que são adicionados contextualmente ou vivendo sob nomes binários diferentes (como python3).

Se assumirmos que um binário Python sempre será chamado python<something>e será um arquivo binário, podemos apenas pesquisar em todo o sistema por arquivos que correspondam a esses critérios:

$ sudo find / -type f -executable -iname 'python*' -exec file -i '{}' \; | awk -F: '/x-executable; charset=binary/ {print $1}' | xargs readlink -f | sort -u | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4
/media/ned/websites/venvold/bin/python: Python 2.7.4
/srv/chroot/precise_i386/usr/bin/python2.7: Python 2.7.3
/srv/chroot/trusty_i386/usr/bin/python2.7: Python 2.7.6
/srv/chroot/trusty_i386/usr/bin/python3.4: Python 3.4.0
/srv/chroot/trusty_i386/usr/bin/python3.4m: Python 3.4.0
/usr/bin/python2.7: Python 2.7.6
/usr/bin/python2.7-dbg: Python 2.7.6
/usr/bin/python3.4: Python 3.4.0
/usr/bin/python3.4dm: Python 3.4.0
/usr/bin/python3.4m: Python 3.4.0
/web/venvold/bin/python: Python 2.7.4

Obviamente, é um comando bastante hediondo, mas este é novamente um resultado real e parece ter feito um trabalho bastante completo.

Oli
fonte
Estou recebendo o seguinte e não sei ao certo o que isso significa: readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
hello_there_andy
presumi python -vque retornaria a versão e a executaria como root. ele imprimiu uma longa lista de coisas, mas no topo dizia installing zipimport hooke agora parece que estou em um programa do qual não tenho idéia de como sair, e muito menos desinstalar? você pode me ajudar aqui?
PrimitiveNom
2
@ Anthony A -Vbandeira da versão diferencia maiúsculas de minúsculas. python -vcolocá-lo em um console Python com mensagens detalhadas ativadas. Ctrl + D para sair. Ou escreva exit()e pressione Enter.
Oli
@hello_there_andy Acho que você digitou um erro ao copiar o comando.
wjandrea 18/06
63

Digite o seguinte no terminal ( Ctrl+ Alt+ T):

python -V

ou

python --version

Você pode encontrar uma lista de opções / parâmetros para muitos comandos no terminal digitando o comando seguido por --help

Exemplo:

python --help

Manual / manpages também estão disponíveis para a maioria de tais CLI que pode ser exibida por man <command>(Ex: man python)

De man python:

COMMAND LINE OPTIONS
        -V ,  --version
              Prints the Python version number of the executable and exits.

Também está python3instalado em muitas máquinas, para que você possa:

python3 --version

para descobrir qual python 3.x você está executando.

duvidoso
fonte
2
Vale a pena notar, como @Florian Diesch abaixo alude ao fato de que você provavelmente tem várias versões de "python". A chamada padrão "python" indica uma instalação do python 2.7, embora o ubuntu 14.04 também venha com o python 3.0.
Mitch
32
python --version

e

python2 --version

mostre a versão do Python 2.x,

python3 --version

a versão instalada do Python 3.x

Florian Diesch
fonte
8

Quando você executa pythonno terminal, ele produz uma saída como esta:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Veja a primeira linha - Python 2.7.6.

Também corra python3. Eu tenho 3.4.1

Python 3.4.1 (default, Jul 31 2014, 12:46:17) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

No entanto, isso não mostra todos eles. Se você possui 2 ou mais versões do python 3.Xx, verá apenas a mais recente.

Por padrão no 14.04, você tem 2.7.6 e 3.4.0. Como você pode ver, eu atualizei para 3.4.1. Eu sei que ainda tenho o 3.4.0, porque quando eu /usr/binvejo python3.4, e se eu corro /usr/bin/python3.4na linha de comando, recebo o 3.4.0, e a execução /usr/local/bin/python3.4me dá o 3.4.1

Meus pronomes são He / Him

Tim
fonte
"Se você possui 2 ou mais versões do python 3.Xx, verá apenas a mais recente." Em vez disso, ele não mostrará o diretório que contém o primeiro listado na PATHvariável de ambiente? Por que correr python3sempre corre o mais alto (sub) versão do python3 que está instalado? Ou, na prática, não mostrará a versão para a qual o /usr/bin/python3link simbólico aponta, que não precisa ser a mais recente?
Eliah Kagan
@Eliah idéia, mas alguns programas de levá-la de lá e outros do /usr/binum ...
Tim
2
Bem, quando se trata de realmente executar programas python, dependendo de como eles são executados, a linha hashbang pode ser usada para determinar qual python atua como intérprete ( detalhes ; observe também o uso de envlinhas hashbang para encontrar o que for interpretado pelo sistema (preferida em comum em scripts Python ). Não tenho certeza se é isso que você quer dizer com diferenças entre alguns programas e outros.
Eliah Kagan
Não, um usuário disse que ocioso correu com 3.4.0 e linha de comando com 3.4.1 ...
Tim
5

Você também pode verificar a versão do Python a partir do próprio código usando o platformmódulo da biblioteca padrão. Existem duas funções: platform.python_version()(retorna string) e platform.python_version_tuple()(retorna tupla). Roteiro:

import platform

print(platform.python_version())
print(platform.python_version_tuple())

Corrida:

$ python test.py 
3.4.1
('3', '4', '1')
$ python2.7 test.py 
2.7.8
('2', '7', '8')
Nykakin
fonte
3
Eu acho que é mais comum usar sys.versionou sys.version_info.
Matt Nordhoff
5

Se você deseja ver todas as versões do Python disponíveis como comandos, execute compgen -c python. Por exemplo:

$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2

Se você deseja obter a versão de cada uma das opções acima, veja um exemplo:

$ for p in $(compgen -c python); do printf "%-16s" $p; $p --version; done
python2.7      Python 2.7.6
python3.4m     Python 3.4.3
python3.4      Python 3.4.3
python3m       Python 3.4.3
python         Python 2.7.6
python3        Python 3.4.3
python2        Python 2.7.6

Atualizar: python*-config

Notei que os python*-configprogramas não suportam a --versionbandeira. Por exemplo:

$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir

Então você pode filtrá-los com grep -v, por exemplo:

compgen -c python | grep -v -- '-config$'
wjandrea
fonte
Essa deve ser a melhor resposta, eu acho.
Solomon Vimal
2

Facilmente, abra o terminal e faça o seguinte:

Escreva

python

para verificar sua versão 2.x No meu caso, ele aparecerá:

Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

Para o 3.x, escreva:

python3

No meu caso, parece:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.

Nos dois casos, para sair do shell do Python, escreva:

 exit()
Willington
fonte
1
  • Terminal shell

    $ which -a pythonlista todos os seus python.

    $ which -a python2.7lista todos os seus python2.7.

    $ /usr/bin/python -Vfornece informações sobre a versão do /usr/bin/python.

  • check-in script python

Aqui está uma ilustração no ipython shell:

In [1]: import sys

In [2]: sys.version
2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec  6 2015, 18:08:32) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)]

In [3]: sys.version_info
sys.version_info(major=2, minor=7, micro=11, releaselevel='final', serial=0)

In [4]: sys.version_info >= (2,7)
Out[4]: True

In [5]: sys.version_info >= (3,)
Out[5]: False
Lee
fonte
presumi python -vque retornaria a versão e a executaria como root. ele imprimiu uma longa lista de coisas, mas no topo dizia installing zipimport hooke agora parece que estou em um programa do qual não tenho idéia de como sair, e muito menos desinstalar? você pode me ajudar aqui?
PrimitiveNom