104 votes

Détecter la version de python dans le shell script.

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" ?

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 utiliser python -V .

1voto

Mi-La Points 81

Si vous avez besoin de vérifier si la version est au moins "une certaine version", alors je préfère une solution qui ne fait pas d'hypothèses sur le nombre de chiffres dans les parties de la version.

VERSION=$(python -V 2>&1 | cut -d\  -f 2) # python 2 prints version to stderr
VERSION=(${VERSION//./ }) # make an version parts array 
if [[ ${VERSION[0]} -lt 3 ]] || [[ ${VERSION[0]} -eq 3 && ${VERSION[1] -lt 5 ]] ; then
    echo "Python 3.5+ needed!" 1>&2
    return 1
fi

Cela fonctionnerait même avec une numérotation comme 2.12.32 ou 3.12.0, etc. Inspiré par cette réponse .

Prograide.com

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.

Powered by:

X