Que dois-je regarder pour voir si je suis sous Windows ou Unix, etc.?
python
cross-platform
platform-specific
platform-agnostic
Mark Harrison
la source
la source
Réponses:
La sortie de
platform.system()
est la suivante:Linux
Darwin
Windows
Voir:
platform
- Accès aux données d'identification de la plateforme sous-jacentela source
platform
plussys.platform
?platform.system()
retourne"Windows"
au lieu de"win32"
.sys.platform
contient également"linux2"
sur les anciennes versions de Python alors qu'il ne contient que"linux"
sur les plus récentes.platform.system()
est toujours revenu juste"Linux"
.os.uname()
n'existe que pour les systèmes Unix. Les documents Python 3: docs.python.org/3/library/os.htmlAvailability: recent flavors of Unix.
Dang - lbrandy m'a battu, mais cela ne signifie pas que je ne peux pas vous fournir les résultats du système pour Vista!
... et je n'arrive pas à croire que personne n'en ait encore publié un pour Windows 10:
la source
platform.release()
'7'
platform.release()
sur mon Windows 10 , et ça m'a vraiment donné'8'
. Peut-être que j'ai installé python avant la mise à niveau, mais vraiment ??Pour mémoire, voici les résultats sur Mac:
la source
platform.release()
retourne'19.2.0'
Exemple de code pour différencier les systèmes d'exploitation à l'aide de python:
la source
Vous pouvez également utiliser
sys.platform
si vous avez déjà importésys
et que vous ne souhaitez pas importer un autre modulela source
Si vous voulez des données lisibles par l'utilisateur mais toujours détaillées, vous pouvez utiliser platform.platform ()
Voici quelques appels possibles que vous pouvez faire pour identifier où vous êtes
Les sorties de ce script ont fonctionné sur quelques systèmes différents (Linux, Windows, Solaris, MacOS) et des architectures (x86, x64, Itanium, power pc, sparc) sont disponibles ici: https://github.com/hpcugent/easybuild/ wiki / OS_flavor_name_version
Le serveur Ubuntu 12.04 donne par exemple:
la source
DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
Histoire courte
Utilisez
platform.system()
. Il renvoieWindows
,Linux
ouDarwin
(pour OSX).Longue histoire
Il existe 3 façons d'obtenir un système d'exploitation en Python, chacune avec ses propres avantages et inconvénients:
Méthode 1
Comment cela fonctionne ( source ): en interne, il appelle les API du système d'exploitation pour obtenir le nom du système d'exploitation tel que défini par le système d'exploitation. Voir ici pour différentes valeurs spécifiques au système d'exploitation.
Pro: Pas de magie, bas niveau.
Con: dépend de la version du système d'exploitation, il est donc préférable de ne pas l'utiliser directement.
Méthode 2
Comment cela fonctionne ( source ): en interne, il vérifie si python a des modules spécifiques au système d'exploitation appelés posix ou nt.
Pro: simple pour vérifier si le système d'exploitation posix
Inconvénient: pas de différenciation entre Linux ou OSX.
Méthode 3
Comment cela fonctionne ( source ): en interne, il finira par appeler des API de système d'exploitation internes, obtenir un nom spécifique à la version du système d'exploitation comme 'win32' ou 'win16' ou 'linux1', puis normaliser vers des noms plus génériques comme 'Windows' ou 'Linux' ou «Darwin» en appliquant plusieurs heuristiques.
Pro: Meilleur moyen portable pour Windows, OSX et Linux.
Con: les gens de Python doivent garder l'heuristique de normalisation à jour.
Sommaire
platform.system()
.posix
ount
utiliseros.name
.sys.platform
.la source
Que diriez-vous d'une nouvelle réponse:
Ce serait la sortie si j'utilisais MACOS
la source
J'ai commencé une liste un peu plus systématique des valeurs auxquelles vous pouvez vous attendre en utilisant les différents modules (n'hésitez pas à modifier et ajouter votre système):
Linux (64 bits) + WSL
sys.platform
est suffixé par la version du noyau, par exemplelinux2
, tout le reste reste identiqueplatform.architecture() = ('64bit', 'ELF')
WINDOWS (64 bits)
(avec une colonne 32 bits exécutée dans le sous-système 32 bits)
Quelques remarques:
distutils.util.get_platform()
qui est identique à `sysconfig.get_platformPour comparer avec votre système, exécutez simplement ce script (et veuillez ajouter les résultats ici s'il manque :)
la source
J'utilise l'outil WLST fourni avec weblogic et il n'implémente pas le package de plate-forme.
En plus de patcher le système javaos.py ( problème avec os.system () sur Windows 2003 avec jdk1.5 ) (ce que je ne peux pas faire, je dois utiliser weblogic hors de la boîte), voici ce que j'utilise:
la source
/usr/bin/python3.2
la source
Pour Jython, le seul moyen d'obtenir le nom du système d'exploitation que j'ai trouvé est de vérifier
os.name
la propriété Java (essayé avecsys
,os
et lesplatform
modules pour Jython 2.5.3 sur WinXP):la source
Résultats intéressants sur Windows 8:
Edit: c'est un bug
la source
Attention si vous êtes sous Windows avec Cygwin où
os.name
estposix
.la source
dans la même veine....
la source
Si vous ne recherchez pas la version du noyau, etc., mais que vous recherchez la distribution linux, vous pouvez utiliser les éléments suivants
en python2.6 +
en python2.4
Évidemment, cela ne fonctionnera que si vous l'exécutez sur Linux. Si vous souhaitez avoir un script plus générique sur toutes les plateformes, vous pouvez mélanger cela avec des exemples de code donnés dans d'autres réponses.
la source
essaye ça:
et vous pouvez le faire:
la source
os.uname()
ne sont pas disponibles sur les fenêtres: docs.python.org/2/library/os.html#os.uname Disponibilité: saveurs récentes d'Unix.Vérifiez les tests disponibles avec la plateforme de modules et imprimez la réponse pour votre système:
la source
Vous pouvez également utiliser uniquement le module de plateforme sans importer le module os pour obtenir toutes les informations.
Une mise en page agréable et bien rangée à des fins de rapport peut être obtenue en utilisant cette ligne:
Cela donne cette sortie:
Ce qui manque généralement, c'est la version du système d'exploitation, mais vous devez savoir si vous exécutez Windows, Linux ou Mac d'une manière indépendante de la plate-forme consiste à utiliser ce test:
la source
Je sais que c'est une vieille question, mais je pense que ma réponse pourrait être utile à certaines personnes qui recherchent un moyen pythonique facile à comprendre pour détecter le système d'exploitation dans leur code. Testé sur python3.7
la source
Si vous exécutez macOS X et exécutez,
platform.system()
vous obtenez darwin car macOS X est construit sur le système d'exploitation Darwin d'Apple. Darwin est le noyau de macOS X et est essentiellement macOS X sans l'interface graphique.la source
Cette solution fonctionne pour
python
etjython
.module os_identify.py :
Utilisez comme ceci:
la source
Que diriez-vous d'une implémentation Enum simple comme celle-ci? Pas besoin de bibliothèques externes!
Simplement, vous pouvez accéder avec la valeur Enum
PS c'est python3
la source
Vous pouvez consulter le code
pyOSinfo
qui fait partie du package pip-date , pour obtenir les informations de système d'exploitation les plus pertinentes, comme le montre votre distribution Python.L'une des raisons les plus courantes pour lesquelles les utilisateurs souhaitent vérifier leur système d'exploitation est la compatibilité des terminaux et la disponibilité de certaines commandes système. Malheureusement, le succès de cette vérification dépend quelque peu de votre installation python et de votre système d'exploitation. Par exemple,
uname
n'est pas disponible sur la plupart des packages Windows Python. Le programme python ci-dessus vous montrera la sortie des fonctions intégrées les plus couramment utilisées, déjà fournies paros, sys, platform, site
.Donc, la meilleure façon d'obtenir uniquement le code essentiel est de considérer cela comme un exemple. (Je suppose que j'aurais pu le coller ici, mais cela n'aurait pas été politiquement correct.)
la source
Je suis en retard dans le jeu mais, juste au cas où quelqu'un en aurait besoin, c'est une fonction que j'utilise pour faire des ajustements sur mon code pour qu'il fonctionne sur Windows, Linux et MacOs:
la source