J'aimerais détecter si python est installé sur un système Linux et si oui, quelle version de python est installée.
Comment puis-je le faire ? Existe-t-il quelque chose de plus gracieux que d'analyser la sortie de "python --version"
?
J'aimerais détecter si python est installé sur un système Linux et si oui, quelle version de python est installée.
Comment puis-je le faire ? Existe-t-il quelque chose de plus gracieux que d'analyser la sortie de "python --version"
?
Vous pouvez utiliser le module de plateforme qui fait partie de la bibliothèque standard de Python :
$ python -c 'import platform; print(platform.python_version())'
2.6.9
Ce module vous permet pour n'imprimer qu'une partie de la chaîne de la version :
$ python -c 'import platform; major, minor, patch = platform.python_version_tuple(); print(major); print(minor); print(patch)'
2
6
9
En utilisant sys.hexversion pourrait être utile si vous voulez comparer la version dans le shell script.
ret=`python -c 'import sys; print("%i" % (sys.hexversion<0x03000000))'`
if [ $ret -eq 0 ]; then
echo "we require python version <3"
else
echo "python version is <3"
fi
Pour compléter la longue liste des solutions possibles, voici une solution similaire à la réponse acceptée, sauf qu'elle intègre un simple contrôle de version :
python -c 'import sys; exit(1) if sys.version_info.major < 3 and sys.version_info.minor < 5 else exit(0)'
ceci retournera 0 si python est installé et au moins des versions 3.5
et retourner 1
si :
3.5
Pour vérifier la valeur, il suffit de comparer $?
(en supposant que bash
), comme on l'a vu dans d'autres questions.
Attention, cela ne permet pas de vérifier les différentes versions pour les éléments suivants Python2
- car la phrase ci-dessus lèvera une exception dans Py2. Cependant, puisque Python2
est sur le point de disparaître, cela ne devrait pas être un problème.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Pourquoi python --version n'est pas gracieux ? Peut-être /usr/bin/env python --version ?
5 votes
Ce que je voulais dire par "non gracieux", c'est que le format de la chaîne peut changer à l'avenir, ce qui invaliderait l'analyse de la chaîne.
1 votes
Python 2.4 renvoie une erreur pour
python --version
. Vous devez utiliserpython -V
.