Możesz użyć python -V
(i wsp.), Aby pokazać wersję Pythona, na którą python
rozpoznaje to polecenie. Jeśli to wszystko, czego potrzebujesz, to koniec. Ale zobaczenie każdej wersji Pythona w twoim systemie zajmuje trochę więcej.
W Ubuntu możemy sprawdzić rozdzielczość za pomocą readlink -f $(which python)
. W domyślnych przypadkach w 14.04 będzie to po prostu wskazywać /usr/bin/python2.7
.
Możemy to połączyć, aby pokazać wersję tej wersji Pythona:
$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/usr/bin/python2.7: Python 2.7.6
Ale to wciąż mówi nam tylko, jaka jest nasza obecna python
rozdzielczość. Gdybyśmy byli w Virtualenv (wspólny system zarządzania stosami Pythona), python
mógłby rozwiązać inną wersję:
$ readlink -f $(which python) | xargs -I % sh -c 'echo -n "%: "; % -V'
/home/oli/venv/bin/python: Python 2.7.4
To jest prawdziwa wydajność.
Faktem jest, że w twoim systemie mogą być wydzielone setki różnych wersji Pythona, albo na ścieżkach dodanych kontekstowo, albo żyjących pod różnymi nazwami binarnymi (jak python3
).
Jeśli założymy, że plik binarny Python zawsze będzie wywoływany python<something>
i będzie plikiem binarnym, możemy po prostu przeszukać cały system w poszukiwaniu plików spełniających te kryteria:
$ 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
Jest to oczywiście dość obrzydliwe polecenie, ale jest to znowu prawdziwy efekt i wydaje się, że wykonał dość dokładną robotę.
ls /usr/bin | grep python