Tengo un script de Python que usa sys.platform.startswith ('linux') para probar si está en linux o no, pero luego no puedo distinguir la diferencia entre el procesador x86 / 64 y el ARM de la frambuesa pi procesador.
La razón por la que necesito esto es para ejecutar un script externo que se compila para mac, linux x86 / 64 o linux ARM para la frambuesa pi.
Por lo que puedo decir, en realidad no hay una forma unificada de decir que de hecho estás ejecutando un raspberry pi. Cualquier ayuda sería apreciada.
Respuestas:
Puede usar el
os
módulo de Python para obtener esta información a través deuname
:Esta función debe proporcionar información sobre la plataforma y otra información sobre la mayoría de las distribuciones similares a Linux o Unix.
De la documentación de Python:
fuente
os.uname()[4][:3] == 'arm'
startswith
, nostartsWith
. Gracias, me ayudó.Descubrí que puedes obtener el modelo y la versión Pi de:
/ sys / firmware / devicetree / base / model
Ej: Raspberry Pi 3 Modelo B Rev 1.2
Tengo un script de shell para buscar esto y devolver el contenido si existe. Una llamada del sistema operativo para leer el archivo, si existe, debería hacerlo bien. La premisa es que, si no existe, definitivamente no es un RPi. Si es así, inspeccione el contenido para asegurarse.
fuente
Esto es más un problema con la llegada del Pi 2 (que no es fácil de distinguir del Beaglebone Black). El nivel más alto de detalle se encuentra en / proc / cpuinfo en sistemas basados en Linux (la línea 'Hardware'). Aquí hay un ejemplo de análisis que, desde el código Adafruit GPIO:
https://github.com/adafruit/Adafruit_Python_GPIO/blob/master/Adafruit_GPIO/Platform.py
fuente
La mejor información de identificación del sistema ampliamente aplicable que he encontrado ha sido con:
Esto parece dar el mismo resultado que el comando de shell
uname -a
. En la mayoría de los casos, la salida devuelta es esencialmente la misma (una cadena en lugar de una tupla de 5) que la deos.uname()
.Los que probé y encontré salidas equivalentes son OSX 10.9.5, Ubuntu 14.04 y Raspbian (??) Wheezy. Sin embargo, en un NAS de Synology, obtengo más información de la
platform._syscmd_uname('-a')
versión:Ver "synology" en la salida lo identifica como un entorno donde las cosas se comportan inesperadamente.
fuente
Mejor forma de hacerlo ( fragmento de código de Python ):
fuente
En PI 3
Porque:
fuente