Comment puis-je savoir quelles versions de Python je possède?
J'utilise Ubuntu 14.04 (Trusty Tahr).
Vous pouvez utiliser python -V
(et al.) pour vous montrer la version de Python résolue par la commande python
. Si c'est tout ce dont vous avez besoin, vous avez terminé. Mais pour voir toutes les versions de python de votre système, cela prend un peu plus de temps.
Dans Ubuntu, nous pouvons vérifier la résolution avec readlink -f $(which python)
. Dans les cas par défaut dans 14.04, cela désignera simplement /usr/bin/python2.7
.
Nous pouvons l'enchaîner pour afficher 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 nous dit encore que notre résolution actuelle de python
. Si nous étions dans un Virtualenv (un système de gestion de pile Python commun), python
pourrait se transformer 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
Ceci est une sortie réelle.
Le fait est que des centaines de versions différentes de Python pourraient être secrètes autour de votre système, soit sur des chemins ajoutés contextuellement, soit sous différents noms binaires (comme python3
).
Si nous supposons qu'un fichier binaire Python va toujours s'appeler python<something>
et être 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 }' | 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 il s’agit là encore d’un résultat réel et il semble avoir fait un travail assez minutieux.
Tapez dans le terminal ( Ctrl + Alt + T ):
python -V
ou
python --version
Vous pouvez trouver une liste d'options / paramètres pour de nombreuses commandes dans le terminal en tapant la commande suivie de - help
Exemple:
python --help
Manuel / pages de manuel également disponibles pour la plupart de ces CLI qui peuvent être affichées par man <command>
(Ex: man python
)
De man python
:
COMMAND LINE OPTIONS
-V , --version
Prints the Python version number of the executable and exits.
Il y a aussi python3
installé sur de nombreuses machines, vous pouvez donc faire:
python3 --version
pour savoir ce que python 3.x exécute.
python --version
et
python2 --version
affiche la version de Python 2.x,
python3 --version
la version installée de Python 3.x
Lorsque vous exécutez python
dans le terminal, cela produit une sortie comme celle-ci:
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.
>>>
Voir la première ligne - Python 2.7.6
.
Exécute également python3
. J'ai 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.
>>>
Cependant, cela ne vous les montrera pas tous. Si vous avez 2 versions de python 3.X.x ou plus, vous n'en verrez que la dernière.
Par défaut, le 14.04, vous avez les versions 2.7.6 et 3.4.0. Comme vous pouvez le voir, j'ai mis à jour 3.4.1. Je sais que j'ai toujours la version 3.4.0 parce que quand je vais à /usr/bin
je vois python3.4
, et si je lance /usr/bin/python3.4
dans la ligne de commande, j'obtiens 3.4.0 et que /usr/local/bin/python3.4
me donne 3.4. 1
Vous pouvez également vérifier la version de Python à partir du code en utilisant le module platform
de la bibliothèque standard. Il existe deux fonctions: platform.python_version()
(renvoie la chaîne) et platform.python_version_tuple()
(renvoie le tuple). Script:
import platform
print(platform.python_version())
print(platform.python_version_tuple())
En cours d'exécution:
$ python test.py
3.4.1
('3', '4', '1')
$ python2.7 test.py
2.7.8
('2', '7', '8')
Si vous souhaitez voir toutes les versions de Python disponibles en tant que commandes, exécutez compgen -c python
. E.g:
$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2
Si vous voulez obtenir la version de chacun de ces éléments, voici un petit article que j'ai écrit:
$ 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
Mise à jour : j'ai simplement ajouté des packages et remarqué que les programmes python*-config
ne prennent pas en charge l'indicateur --version
. E.g:
$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
Ouvrez facilement le terminal et procédez comme suit:
Écrire
python
pour vérifier votre version 2.x Dans mon cas, il apparaîtra:
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.
Pour le 3.x, écrivez:
python3
Dans mon cas, il apparaît:
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.
Pour les deux cas, pour sortir du shell Python, écrivez:
exit()
In shell terminal
$ which -a python
répertorie tous vos python
.
$ which -a python2.7
répertorie tous vos python2.7
.
$ /usr/bin/python -V
donne des informations sur la version de /usr/bin/python
.
archiver le script python
voici une illustration dans 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
Lire d'autres questions sur les étiquettes python