Détecter Windows, Linux ou macOS avec le module platform en Python

1. À propos de la détection de Windows, Linux ou macOS avec le module platform

Un programme Python peut être exécuté sous différents systèmes d'exploitation. Il peut fonctionner sous Windows, Linux, macOS ou encore sur d'autres plateformes. Dans certaines situations, le programme doit connaître le système utilisé afin d'adapter automatiquement son comportement.

Le module standard platform de Python fournit plusieurs fonctions permettant d'obtenir des informations sur le système d'exploitation et l'environnement d'exécution. La fonction la plus adaptée pour identifier le système est platform.system().

Le module platform appartient à la bibliothèque standard de Python. Il n'est donc pas nécessaire de l'installer avec pip. Il suffit de l'importer.

Sortie :

La détection du système est notamment utile pour créer des programmes multiplateformes, choisir des chemins de fichiers adaptés, exécuter certaines commandes spécifiques ou afficher des informations de diagnostic.

2. Détecter le système d'exploitation avec platform.system()

La fonction platform.system() retourne une chaîne de caractères contenant le nom du système d'exploitation sur lequel Python est exécuté.

Le programme suivant récupère puis affiche cette information.

Sortie possible sous Windows :

Sur un ordinateur Linux, le même programme peut produire la sortie suivante.

Sortie possible sous Linux :

Sur un ordinateur utilisant macOS, la valeur retournée n'est pas "macOS", mais Darwin.

Sortie possible sous macOS :

Il est donc important de retenir la correspondance suivante : Windows retourne "Windows", Linux retourne "Linux" et macOS retourne "Darwin".

3. Détecter Windows avec Python

Pour déterminer si un programme est exécuté sous Windows, il suffit de comparer la valeur retournée par platform.system() avec la chaîne "Windows".

Sortie possible sous Windows :

Nous pouvons stocker le système dans une variable lorsque cette information doit être utilisée plusieurs fois dans le programme.

Sortie possible sous Windows :

Cette technique permet d'isoler facilement les portions de programme destinées uniquement à Windows.

4. Détecter Linux avec Python

La détection de Linux fonctionne de la même manière. La fonction platform.system() retourne normalement la chaîne "Linux" lorsque Python est exécuté sur un système Linux.

Sortie possible sous Linux :

Nous pouvons également récupérer des informations complémentaires avec platform.release() et platform.machine().

Sortie possible :

La valeur retournée par platform.release() dépend de la version du noyau Linux installée sur la machine.

5. Détecter macOS avec Python

La détection de macOS demande une attention particulière. La fonction platform.system() retourne Darwin et non "macOS".

Pour détecter macOS, il faut donc effectuer la comparaison avec la chaîne "Darwin".

Sortie possible sous macOS :

Le module platform possède également la fonction platform.mac_ver(), qui permet d'obtenir des informations spécifiques à macOS.

Sortie possible :

La version affichée dépend naturellement de la version de macOS installée sur l'ordinateur.

6. Créer un programme compatible avec Windows, Linux et macOS

Pour distinguer les trois principaux systèmes dans un même programme, nous pouvons utiliser une structure conditionnelle if / elif / else.

Le programme suivant détecte automatiquement Windows, Linux ou macOS et affiche un message correspondant.

Sortie possible sous Windows :

Le même code exécuté sous Linux produit automatiquement un résultat différent.

Sortie possible sous Linux :

Cette structure constitue une base simple pour créer des applications Python multiplateformes.

7. Obtenir la version du système détecté

Identifier uniquement Windows, Linux ou macOS n'est pas toujours suffisant. Le module platform permet également d'obtenir la release et la version du système.

Le programme suivant affiche le système, sa release et sa version.

Sortie possible sous Windows :

Nous pouvons combiner ces informations avec la détection du système afin de produire un message adapté.

Sortie possible sous Linux :

Pour obtenir un résumé global supplémentaire, nous pouvons utiliser platform.platform().

Sortie possible :

8. Adapter automatiquement un programme au système d'exploitation

La détection du système devient particulièrement intéressante lorsque certaines opérations diffèrent entre Windows, Linux et macOS. Le programme peut alors sélectionner automatiquement le traitement adapté.

Un exemple simple concerne le séparateur habituellement utilisé dans les chemins de fichiers. Nous pouvons afficher le type de chemin attendu selon le système détecté.

Sortie possible sous Windows :

Pour manipuler réellement des chemins dans une application multiplateforme, il est toutefois préférable d'utiliser pathlib plutôt que de construire manuellement les chemins en fonction du système.

Un autre exemple consiste à sélectionner une valeur de configuration différente selon le système.

Sortie possible sous macOS :

La détection du système permet ainsi d'adapter certains paramètres sans demander à l'utilisateur d'indiquer manuellement son environnement.

9. Créer une fonction réutilisable de détection du système

Lorsque la détection du système doit être utilisée plusieurs fois, il est préférable de créer une fonction réutilisable. Celle-ci peut convertir automatiquement la valeur "Darwin" en un nom plus compréhensible comme "macOS".

Sortie possible sous Windows :

Nous pouvons enrichir cette fonction afin qu'elle retourne plusieurs informations dans un dictionnaire.

Sortie possible sous Windows :

Nous pouvons enfin utiliser la fonction de détection pour exécuter un traitement différent selon le système.

Sortie possible sous Linux :

Cette organisation permet de centraliser la détection du système d'exploitation et facilite la maintenance d'une application destinée à plusieurs plateformes.

10. À retenir !

Le module platform permet de détecter facilement le système d'exploitation sur lequel un programme Python est exécuté. Pour distinguer Windows, Linux et macOS, la fonction la plus directe est platform.system().

  • platform.system() retourne le nom du système d'exploitation.
  • Sous Windows, platform.system() retourne généralement "Windows".
  • Sous Linux, platform.system() retourne généralement "Linux".
  • Sous macOS, platform.system() retourne "Darwin".
  • Une structure if / elif / else permet d'exécuter un traitement différent selon le système détecté.
  • platform.release() permet d'obtenir la release du système.
  • platform.version() fournit des informations complémentaires sur sa version.
  • platform.machine() renseigne sur le type de machine ou l'architecture rapportée par le système.
  • platform.platform() fournit une chaîne descriptive plus globale de la plateforme.
  • platform.mac_ver() fournit des informations spécifiques à macOS.
  • Pour manipuler des chemins de manière multiplateforme, il est généralement préférable d'utiliser pathlib plutôt que de construire les chemins manuellement.
  • Une fonction personnalisée peut convertir "Darwin" en "macOS" afin de produire un résultat plus compréhensible pour l'utilisateur.

Le programme suivant résume la méthode essentielle permettant de détecter Windows, Linux ou macOS avec Python.

Sortie possible sous Windows :

 




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 *