Quelle est la version de Python que j'ai?

73

Comment puis-je savoir quelles versions de Python j'ai?

J'utilise Ubuntu 14.04 (Trusty Tahr).

TechJhola
la source
4
En outre, un moyen rapide de voir quels binaires Python sont installés est le suivant:ls /usr/bin | grep python
Tejas Kale
1
@TejasKale Mieux vaut exécuter ls /usr/bin/python*(ou ls /usr/bin/*python*si vous voulez vraiment des fichiers avec python n'importe où dans le nom). De cette façon, lscontinue de formater sa sortie pour un terminal (et vous obtenez plusieurs colonnes et, avec l' lsalias par défaut d'Ubuntu, une colorisation).
Eliah Kagan

Réponses:

86

Vous pouvez utiliser python -V(et autres) pour vous montrer la version de Python à laquelle la pythoncommande 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 pythonrésolution actuelle . Si nous nous trouvions dans un Virtualenv (un système de gestion de pile Python commun), nous pythonpourrions 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.

Oli
la source
Je readlink: extra operand '/usr/bin/python2.7' Try 'readlink --help' for more information.
comprends
J'ai supposé python -vretourner la version et l'exécuter en tant que root. il a imprimé une longue liste de choses, mais au sommet, il a dit installing zipimport hooket maintenant, il semble que je suis dans un programme dont je ne sais pas comment sortir, et encore moins désinstaller ?? pouvez-vous m'aider ici
PrimitiveNom
2
@Anthony L' -Vindicateur de version est sensible à la casse. python -vvous mettre dans une console Python avec les messages commentés activés. Contrôle + D pour sortir. Ou écrivez exit()et appuyez sur retour.
Oli
@hello_there_andy Je suppose que vous avez fait une faute de frappe lorsque vous avez copié la commande.
Wjandrea
63

Tapez la suite 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 / manpages également disponible pour la plupart de ces CLI qui peuvent être affichés 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 est également python3installé sur de nombreuses machines, vous pouvez donc faire:

python3 --version

pour savoir quel python 3.x vous utilisez.

Douteux
la source
2
Il est à noter que @Florian Diesch, ci-dessous, fait allusion au fait que vous avez probablement plusieurs versions de "python". L'appel "python" par défaut pointe vers une installation de python 2.7, bien que Ubuntu 14.04 soit également fourni avec python 3.0.
Mitch
32
python --version

et

python2 --version

montrer la version de Python 2.x,

python3 --version

la version installée de Python 3.x

Florian Diesch
la source
8

Lorsque vous exécutez pythondans 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.

Courez aussi 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 au moins 2 versions de python 3.Xx, 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 3.4.0 parce que quand je vais sur /usr/binje vois python3.4, et si je cours /usr/bin/python3.4en ligne de commande, je reçois 3.4.0, et courir /usr/local/bin/python3.4me donne 3.4.1

Mes pronoms sont Il / Lui

Tim
la source
"Si vous avez au moins 2 versions de python 3.Xx, vous ne verrez que la dernière." Ne montrera-t-il pas à la place le répertoire contenant qui figure en premier dans la PATHvariable d'environnement? Pourquoi exécuter en cours d'exécution python3toujours la version (sous) la plus haute de python3 installée? Ou, dans la pratique, ne montrera-t-il pas la version vers laquelle le /usr/bin/python3lien symbolique pointe, laquelle n’est pas nécessairement la dernière?
Eliah Kagan
@Eliah Aucune idée, mais certains programmes partent de là et d'autres de celui- /usr/binlà ...
Tim
2
Eh bien, quand il vient à l' exécution en fait des programmes de python, selon la façon dont ils sont gérés, la ligne de Hashbang peut être utilisé pour déterminer quels actes python comme l'interprète ( détails , notez également l'utilisation de envdans les lignes de Hashbang trouver selon l' interprétation peuvent être le système -préféré en commun dans les scripts Python ). Je ne sais pas si c'est ce que vous entendez par différences entre certains programmes.
Eliah Kagan
Non, un utilisateur a déclaré que la période d'inactivité avec 3.4.0 et la ligne de commande avec 3.4.1 ...
Tim,
5

Vous pouvez également vérifier la version Python à partir du code lui-même à l'aide du platformmodule de la bibliothèque standard. Il y a deux fonctions: platform.python_version()(retourne une chaîne) et platform.python_version_tuple()(retourne un 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')
Nykakin
la source
3
Je pense que c'est plus commun d'utiliser sys.versionou sys.version_info.
Matt Nordhoff
5

Si vous voulez voir toutes les versions de Python disponibles sous forme de 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

Mise à jour: python*-config

J'ai remarqué que les python*-configprogrammes ne supportent pas le --versiondrapeau. 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$'
Wjandrea
la source
Cela devrait être la meilleure réponse, je suppose.
Salomon Vimal
2

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 du shell Python, écrivez:

 exit()
Willington
la source
1
  • En terminal terminal

    $ which -a pythonliste tous vos python.

    $ which -a python2.7liste tous vos python2.7.

    $ /usr/bin/python -Vdonne des informations sur la version de /usr/bin/python.

  • check in 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
Lee
la source
J'ai supposé python -vretourner la version et l'exécuter en tant que root. il a imprimé une longue liste de choses, mais au sommet, il a dit installing zipimport hooket maintenant, il semble que je suis dans un programme dont je ne sais pas comment sortir, et encore moins désinstaller ?? pouvez-vous m'aider ici
PrimitiveNom