Vous pouvez utiliser python -V
(et autres) pour vous montrer la version de Python à laquelle la python
commande est résolue. Si c'est tout ce dont vous avez besoin, vous avez terminé. Mais voir chaque version de python dans votre système prend un peu plus.
Dans Ubuntu, nous pouvons vérifier la résolution avec readlink -f $(which python)
. Dans les cas par défaut de 14.04, il s’agira simplement de pointer vers /usr/bin/python2.7
.
Nous pouvons l'enchaîner pour montrer la version de cette version de Python:
$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/usr/bin/python2.7: Python 2.7.6
Mais cela ne fait que nous dire quelle est notre python
résolution actuelle . Si nous nous trouvions dans un Virtualenv (un système de gestion de pile Python commun), nous python
pourrions le résoudre en une version différente:
$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4
C'est la sortie réelle.
Le fait est qu'il pourrait y avoir des centaines de versions différentes de Python secrètes autour de votre système, soit sur des chemins ajoutés de manière contextuelle, soit sous des noms binaires différents (comme python3
).
Si nous supposons qu'un binaire Python sera toujours appelé python<something>
et sera un fichier binaire, nous pouvons simplement rechercher dans tout le système les fichiers correspondant à ces critères:
$ 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
C’est évidemment une commande assez hideuse, mais c’est là encore une sortie réelle et elle semble avoir fait un travail assez complet.
ls /usr/bin | grep python