Comment savoir quelles versions de Python j'ai?
J'utilise Ubuntu 14.04 (Trusty Tahr).
Vous pouvez utiliser python -V
(et al.) Pour vous montrer la version de Python à laquelle la commande python
a été résolue. Si c'est tout ce dont vous avez besoin, vous avez terminé. Mais pour voir chaque version de python sur votre système, il en faut 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 /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 indiquer quelle est notre résolution actuelle python
name__. Si nous étions dans un Virtualenv (un système de gestion de pile Python commun) python
pourrait être résolu 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 différents noms binaires (tels que python3
).
Si nous supposons qu'un binaire Python sera toujours appelé python<something>
et sera un fichier binaire, nous pouvons simplement rechercher dans le système entier 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.
Tapez ensuite 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 interfaces de ligne de commande pouvant être affichées avec man <command>
(Ex: man python
)
De man python
:
COMMAND LINE OPTIONS
-V , --version
Prints the Python version number of the executable and exits.
python3
est également installé sur de nombreuses machines. Vous pouvez donc:
python3 --version
pour savoir ce que vous utilisez python 3.x.
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, le résultat sera le suivant:
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écutez é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 montrera pas tout. Si vous avez 2 ou plus de python 3.X.x versions, vous ne verrez que la dernière.
Par défaut sur 14.04, vous avez 2.7.6 et 3.4.0. Comme vous pouvez le constater, j'ai mis à jour la version 3.4.1. Je sais que j'ai toujours la version 3.4.0 car lorsque je vais à /usr/bin
, je vois python3.4
et si je lance /usr/bin/python3.4
dans la ligne de commande, je reçois la version 3.4.0 et l'exécution de /usr/local/bin/python3.4
me donne 3.4.1.
Vous pouvez également vérifier la version Python du code lui-même à l'aide du module platform
de la bibliothèque standard. Il existe deux fonctions: platform.python_version()
(retourne une chaîne) et platform.python_version_Tuple()
(retourne Tuple). Scénario:
import platform
print(platform.python_version())
print(platform.python_version_Tuple())
Fonctionnement:
$ 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
. Par exemple:
$ compgen -c python
python2.7
python3.4m
python3.4
python3m
python
python3
python2
Si vous souhaitez obtenir la version de chacun des éléments ci-dessus, voici une ligne:
$ 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
python*-config
J'ai remarqué que les programmes python*-config
ne prennent pas en charge l'indicateur --version
. Par exemple:
$ python3-config --version
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
Vous pouvez donc les filtrer avec grep -v
, par exemple:
compgen -c python | grep -v -- '-config$'
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.
Dans les deux cas, pour sortir de Python Shell, écrivez:
exit()
Dans le terminal shell
$ which -a python
liste tous vos python
.
$ which -a python2.7
liste 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 le shell ipython:
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