Você pode usar python -V
(et al.) Para mostrar a versão do Python para a qual o python
comando 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 python
resolução atual . Se estivéssemos em um Virtualenv (um sistema de gerenciamento de pilha Python comum), python
poderí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.
ls /usr/bin | grep python