Você pode usar python -V
(et al.) para mostrar a versão do Python para a qual o comando python
resolve. Se isso é tudo que você precisa, está feito. Mas para ver todas as versões do python no seu sistema é necessário um pouco mais.
No Ubuntu, podemos verificar a resolução com readlink -f $(which python)
. Em casos padrão em 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á nos dizendo qual é a nossa atual python
de resolução. Se estivéssemos em um Virtualenv (um sistema comum de gerenciamento de pilha Python), python
poderia 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 segregadas em torno do seu sistema, seja em caminhos que são adicionados contextualmente ou vivendo sob nomes binários diferentes (como python3
).
Se assumirmos que um binário do Python sempre será chamado de python<something>
e um arquivo binário, poderemos procurar 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 }' | 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 muito horrível, mas isso é mais uma vez uma saída real e parece ter feito um trabalho bastante completo.