Connaître l'interpréteur Python avec sys.executable

1. À propos de sys.executable

Le module sys fournit plusieurs informations concernant l'environnement dans lequel un programme Python est exécuté. Parmi celles-ci, sys.executable permet d'obtenir le chemin de l'exécutable Python utilisé pour exécuter le programme courant.

Cette information est particulièrement utile lorsqu'un ordinateur possède plusieurs installations de Python, plusieurs versions de Python ou différents environnements virtuels.

Le programme suivant affiche simplement la valeur de sys.executable.

Sortie possible sous Windows :

Le résultat dépend de l'installation de Python utilisée sur l'ordinateur. Sous Linux ou macOS, le chemin sera naturellement différent.

2. Afficher le chemin de l'interpréteur Python

sys.executable contient généralement le chemin absolu de l'exécutable Python qui exécute actuellement le programme. Nous pouvons l'afficher avec la fonction print().

Le programme suivant ajoute un message afin de rendre le résultat plus explicite.

Sortie possible sous Windows :

Sous Linux, nous pourrions par exemple obtenir un chemin de la forme suivante.

Sortie possible sous Linux :

Le chemin obtenu correspond à l'interpréteur associé au processus Python courant.

3. Comprendre le chemin retourné par sys.executable

La valeur retournée par sys.executable peut être utilisée comme un chemin classique. Nous pouvons notamment la convertir en objet Path afin de profiter des outils du module pathlib.

Le programme suivant transforme le chemin de l'interpréteur en objet Path puis l'affiche.

Sortie possible :

Nous pouvons également vérifier si le chemin retourné correspond effectivement à un fichier avec la méthode is_file().

Sortie possible :

4. Récupérer le nom et le dossier de l'interpréteur

En combinant sys.executable avec pathlib, nous pouvons facilement récupérer le nom de l'exécutable et le dossier dans lequel il se trouve.

Le programme suivant utilise les propriétés name et parent d'un objet Path.

Sortie possible sous Windows :

Nous pouvons également récupérer uniquement le nom sans son extension grâce à la propriété stem.

Sortie possible :

5. Identifier l'interpréteur dans un environnement virtuel

L'une des utilisations les plus intéressantes de sys.executable consiste à vérifier quel interpréteur est utilisé après l'activation d'un environnement virtuel. Dans ce cas, le chemin pointe normalement vers l'interpréteur associé à cet environnement.

Supposons qu'un environnement virtuel nommé venv ait été créé et activé sous Windows. Le programme suivant permet de connaître l'interpréteur réellement utilisé.

Sortie possible sous Windows :

Nous pouvons comparer ce résultat avec la valeur de sys.prefix, qui indique le préfixe de l'environnement Python courant.

Sortie possible dans un environnement virtuel :

Dans un environnement virtuel classique, sys.prefix et sys.base_prefix sont généralement différents. Cela permet également de détecter si le programme s'exécute dans un environnement virtuel.

6. Comparer sys.executable avec la commande python

La commande python saisie dans un terminal dépend notamment de la configuration du PATH, d'un environnement virtuel actif et du système utilisé. En revanche, sys.executable indique directement quel exécutable a lancé le processus Python courant.

Le programme suivant permet donc de vérifier rapidement quel Python est réellement utilisé par un script.

Sortie possible :

Sous Windows, la commande where python permet de rechercher les exécutables nommés python accessibles via le PATH. Elle peut afficher plusieurs chemins, alors que sys.executable indique celui du processus Python en cours.

Sortie possible :

Cette comparaison peut être utile lorsque VS Code, un terminal ou un environnement virtuel semble utiliser une installation de Python différente de celle attendue.

7. Utiliser sys.executable pour installer un package avec pip

sys.executable peut être utilisé pour lancer pip avec exactement le même interpréteur Python que celui qui exécute le programme. Cette technique évite certaines ambiguïtés lorsqu'un ordinateur contient plusieurs installations de Python.

Le programme suivant affiche d'abord la commande qui pourrait être utilisée pour exécuter pip avec l'interpréteur courant.

Sortie possible :

Pour exécuter réellement une commande avec l'interpréteur courant depuis un programme Python, il est préférable d'utiliser le module subprocess et de transmettre les arguments sous forme de liste.

Sortie possible :

Cette méthode permet de s'assurer que pip est lancé avec l'interpréteur représenté par sys.executable.

8. Utiliser sys.executable pour lancer un autre script Python

Une autre utilisation de sys.executable consiste à lancer un autre script avec le même interpréteur Python que le programme courant. Nous pouvons pour cela utiliser subprocess.run().

Supposons que le fichier test.py contienne simplement une instruction affichant un message. Le programme principal peut le lancer avec l'interpréteur courant.

Si test.py affiche le message « Script secondaire exécuté », nous obtenons :

Nous pouvons également transmettre des arguments au script secondaire en les ajoutant à la liste.

Si le script test.py affiche les arguments reçus, la sortie peut être :

Cette technique évite d'écrire directement "python" dans le programme et permet de réutiliser explicitement l'interpréteur du processus courant.

9. Afficher les principales informations sur l'interpréteur

Nous pouvons combiner sys.executable avec d'autres informations du module sys pour obtenir une petite fiche descriptive de l'environnement Python courant.

Le programme suivant affiche le chemin de l'interpréteur, sa version, le préfixe courant et le préfixe de l'installation principale.

Sortie possible :

Nous pouvons compléter ces informations avec sys.platform afin de connaître l'identifiant de la plateforme sur laquelle Python fonctionne.

Sortie possible sous Windows :

10. À retenir

La variable sys.executable du module sys permet d'identifier l'interpréteur Python utilisé par le processus courant. Elle est particulièrement utile lorsqu'un ordinateur possède plusieurs installations ou plusieurs environnements Python.

  • sys.executable fournit le chemin de l'exécutable Python courant lorsqu'il peut être déterminé.
  • Sous Windows, le chemin se termine généralement par python.exe.
  • Sous Linux ou macOS, le chemin de l'interpréteur possède une forme différente.
  • Path(sys.executable) permet de manipuler facilement ce chemin avec pathlib.
  • Path(sys.executable).name permet d'obtenir le nom de l'exécutable.
  • Path(sys.executable).parent permet d'obtenir son dossier.
  • Dans un environnement virtuel, sys.executable pointe normalement vers l'interpréteur associé à cet environnement.
  • sys.prefix et sys.base_prefix peuvent aider à identifier un environnement virtuel.
  • sys.executable -m pip permet de cibler le pip associé au même interpréteur.
  • subprocess.run([sys.executable, ...]) permet de lancer un autre script avec le même interpréteur.

Le programme suivant rassemble les principales informations permettant d'identifier rapidement l'interpréteur Python utilisé.

Sortie possible :

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *