Revisando alguna de mis antiguas entradas me encuentro con una que me resulta interesante: ¿Cómo saber sobre qué plataforma estamos usando dentro de un script de python?. Y bueno, entre que ha llovido bastante desde entonces, y que ahora parece que hay mejores formas de sacar esta misma información (y más, todavía), me he lanzado a sacar una nueva entrada. Vaale, también es para evitar tener que cambiar el subtítulo del blog, que poco estaba publicando sobre python.
He de avisar, que, de entrada, esto sólo he visto que funcione en sistemas operativos de tipo Unix, es decir, Linux y Mac OS, además de otros como FreeBSD o AIX. No parece que esté disponible una llamada similar para sistemas basados en NT, como Windows. Es más, parece que encima da error, por lo que mucho cuidado al diseñar scripts para ser ejecutados en múltiples plataformas.
Es bastante frecuente recurrir al comando uname -a
para sacar toda la información posible de la plataforma que está corriendo nuestra máquina. Obtenemos información como el sistema operativo, la versión del kernel, el nombre de la máquina, la arquitectura sobre la que funciona… En definitiva, todo bastante detallado.
Si quisiéramos obtener esa misma información en Python, la primera tentativa que se nos pasa por la cabeza puede ser parsear la salida de subprocess.run(["uname","-a"])
, pero afortunadamente tenemos una solución mejor.
El módulo os
de python viene con una función, os.uname
que nos trae la misma información que buscamos, pero formateada de una forma mucho más accesible y comprensible en nuestro script:
Y de esta forma podemos imprimir lo que nos interesa, de una forma tremendamente fácil:
>>> import os
>>> uname = os.uname()
>>> print(f"Sysname es {uname.sysname}")
Sysname es Linux
>>> print(f"La release es {uname.release}")
La release es 5.11.0-27-generic
>>> print(f"La versión (compilación) es {uname.version}")
La versión (compilación) es #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021
>>> print(f"Y está corriendo en una plataforma {uname.machine}")
Y está corriendo en una plataforma x86_64
La documentación oficial está disponible en la página del módulo os. Es recomendable consultarla, por si necesitas algo que no haya contemplado yo.
Salida de ejemplo en diferentes plataformas
Puede ser útil saber qué tipo esperar en diferentes plataformas. Aquí dejo algunas que he hecho por mí mismo tanto otras que he encontrado por internet. Iré actualizando el post con otros que vaya encontrando, o con lo que me dejéis en los comentarios!
Linux sobre x86_64
Esta es de mi máquina, corriendo Ubuntu 20.04 y Python 3.8.
>>> import os
>>> os.uname()
posix.uname_result(sysname='Linux', nodename='mortadelo', release='5.11.0-27-generic', version='#29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021', machine='x86_64')
Raspberry Pi Pico
Esta la he encontrado por internet en los foros de raspberry, usando micropython:
>>> import os
>>> os.uname()
(sysname='rp2', nodename='rp2', release='1.14.0', version='v1.14 on 2021-02-05 (GNU 9.3.0 MinSizeRel)', machine='Raspberry Pi Pico with RP2040')
Y nada, ¡nos vemos en el próximo tip de python!
Saludos 😉