¿Qué necesito mirar para ver si estoy en Windows o Unix, etc.?
python
cross-platform
platform-specific
platform-agnostic
Mark Harrison
fuente
fuente
Respuestas:
La salida de
platform.system()
es la siguiente:Linux
Darwin
Windows
Ver:
platform
- Acceso a los datos de identificación de la plataforma subyacente.fuente
platform
mássys.platform
?platform.system()
devuelve en"Windows"
lugar de"win32"
.sys.platform
también contiene"linux2"
versiones antiguas de Python, mientras que solo contiene versiones más"linux"
recientes.platform.system()
siempre ha regresado justo"Linux"
.os.uname()
solo existe para sistemas Unix. Los documentos de Python 3: docs.python.org/3/library/os.htmlAvailability: recent flavors of Unix.
Dang - lbrandy me ganó, pero eso no significa que no pueda proporcionarle los resultados del sistema para Vista.
... y no puedo creer que nadie haya publicado uno para Windows 10 todavía:
fuente
platform.release()
'7'
platform.release()
mi Windows 10 , y definitivamente me dio'8'
. Tal vez instalé Python antes de actualizar, ¿pero realmente?Para el registro aquí están los resultados en Mac:
fuente
platform.release()
regresa'19.2.0'
Código de muestra para diferenciar los sistemas operativos con Python:
fuente
También puede usarlo
sys.platform
si ya ha importadosys
y no desea importar otro módulofuente
Si desea datos legibles por el usuario pero aún detallados, puede usar platform.platform ()
Aquí hay algunas posibles llamadas diferentes que puede hacer para identificar dónde se encuentra
Los resultados de este script se ejecutaron en algunos sistemas diferentes (Linux, Windows, Solaris, MacOS) y las arquitecturas (x86, x64, Itanium, power pc, sparc) están disponibles aquí: https://github.com/hpcugent/easybuild/ wiki / OS_flavor_name_version
El servidor Ubuntu 12.04 por ejemplo da:
fuente
DeprecationWarning: dist() and linux_distribution() functions are deprecated in Python 3.5
Cuento
Uso
platform.system()
. RegresaWindows
,Linux
oDarwin
(para OSX).Larga historia
Hay 3 formas de obtener el sistema operativo en Python, cada una con sus propios pros y contras:
Método 1
Cómo funciona esto ( fuente ): internamente llama a las API del sistema operativo para obtener el nombre del sistema operativo tal como lo define el sistema operativo. Consulte aquí los distintos valores específicos del sistema operativo.
Pro: Sin magia, bajo nivel.
Con: la versión del sistema operativo depende, por lo que es mejor no usarla directamente.
Método 2
Cómo funciona esto ( fuente ): internamente comprueba si python tiene módulos específicos del sistema operativo llamados posix o nt.
Pro: simple para verificar si el sistema operativo posix
Con: no hay diferenciación entre Linux u OSX.
Método 3
Cómo funciona esto ( fuente ): internamente eventualmente llamará API internas del sistema operativo, obtendrá un nombre específico de la versión del sistema operativo como 'win32' o 'win16' o 'linux1' y luego se normalizará a nombres más genéricos como 'Windows' o 'Linux' o 'Darwin' aplicando varias heurísticas.
Pro: la mejor forma portátil para Windows, OSX y Linux.
Con: la gente de Python debe mantener la normalización heurística actualizada.
Resumen
platform.system()
.posix
ont
luego usaros.name
.sys.platform
.fuente
¿Qué tal una nueva respuesta:
Este sería el resultado si estuviera usando MACOS
fuente
Comencé una lista un poco más sistemática de los valores que puede esperar utilizando los diversos módulos (no dude en editar y agregar su sistema):
Linux (64 bits) + WSL
sys.platform
tiene el sufijo de la versión del kernel, por ejemplolinux2
, todo lo demás permanece idénticoplatform.architecture() = ('64bit', 'ELF')
VENTANAS (64 bits)
(con una columna de 32 bits ejecutándose en el subsistema de 32 bits)
Algunas observaciones:
distutils.util.get_platform()
que es idéntico a `sysconfig.get_platformPara comparar con su sistema, simplemente ejecute este script (y agregue los resultados aquí si faltan :)
fuente
Estoy usando la herramienta WLST que viene con weblogic y no implementa el paquete de plataforma.
Además de parchear el sistema javaos.py ( problema con os.system () en Windows 2003 con jdk1.5 ) (que no puedo hacer, tengo que usar weblogic de fábrica), esto es lo que uso:
fuente
/usr/bin/python3.2
fuente
Para Jython, la única forma de obtener el nombre del sistema operativo que encontré es verificar
os.name
la propiedad de Java (probado consys
,os
y losplatform
módulos para Jython 2.5.3 en WinXP):fuente
Resultados interesantes en Windows 8:
Editar: Eso es un error
fuente
Tenga cuidado si está en Windows con Cygwin donde
os.name
estáposix
.fuente
en la misma vena....
fuente
Si no está buscando la versión del kernel, etc., pero está buscando la distribución de Linux, puede usar lo siguiente
en python2.6 +
en python2.4
Obviamente, esto funcionará solo si está ejecutando esto en Linux. Si desea tener un script más genérico en todas las plataformas, puede mezclar esto con ejemplos de código proporcionados en otras respuestas.
fuente
prueba esto:
y puedes hacerlo:
fuente
os.uname()
está disponible en Windows: docs.python.org/2/library/os.html#os.uname Disponibilidad:Verifique las pruebas disponibles con la plataforma del módulo e imprima la respuesta para su sistema:
fuente
También puede usar solo el módulo de plataforma sin importar el módulo os para obtener toda la información.
Se puede lograr un diseño agradable y ordenado para fines de informes utilizando esta línea:
Eso da esta salida:
Lo que falta generalmente es la versión del sistema operativo, pero debe saber si está ejecutando Windows, Linux o Mac, una forma independiente de la plataforma es utilizar esta prueba:
fuente
Sé que esta es una vieja pregunta, pero creo que mi respuesta podría ser útil para algunas personas que buscan una forma pitónica fácil de entender para detectar el sistema operativo en su código. Probado en python3.7
fuente
Si está ejecutando macOS X y se ejecuta
platform.system()
, obtendrá darwin porque macOS X se basa en el sistema operativo Darwin de Apple. Darwin es el núcleo de macOS X y es esencialmente macOS X sin la GUI.fuente
Esta solución funciona para ambos
python
yjython
.módulo os_identify.py :
Usar así:
fuente
¿Qué tal una implementación simple de Enum como la siguiente? ¡No hay necesidad de libs externas!
Simplemente puede acceder con el valor Enum
PD: es python3
fuente
Puede ver el código en el
pyOSinfo
que forma parte del paquete pip-date , para obtener la información más relevante del sistema operativo, como se ve en su distribución de Python.Una de las razones más comunes por las que las personas quieren verificar su sistema operativo es la compatibilidad de la terminal y si ciertos comandos del sistema están disponibles. Desafortunadamente, el éxito de esta comprobación depende en cierta medida de su instalación y sistema operativo de Python. Por ejemplo,
uname
no está disponible en la mayoría de los paquetes de Python de Windows. El programa de Python anterior le mostrará el resultado de las funciones integradas más utilizadas, ya proporcionadas poros, sys, platform, site
.Entonces, la mejor manera de obtener solo el código esencial es mirar eso como un ejemplo. (Supongo que podría haberlo pegado aquí, pero eso no habría sido políticamente correcto).
fuente
Llego tarde al juego, pero, en caso de que alguien lo necesite, esta es una función que uso para hacer ajustes en mi código para que se ejecute en Windows, Linux y MacOs:
fuente