Ich habe ein Python-Skript, das sys.platform.startswith ('linux') verwendet, um zu testen, ob es unter Linux läuft oder nicht, aber dann kann ich den Unterschied zwischen dem x86 / 64-Prozessor und dem Himbeer-Pi-ARM nicht erkennen Prozessor.
Der Grund, warum ich das brauche, ist, ein externes Skript auszuführen, das entweder für Mac, Linux x86 / 64 oder Linux ARM für das Himbeer-Pi kompiliert wurde.
Nach allem, was ich sagen kann, gibt es keine einheitliche Methode, um zu sagen, dass Sie tatsächlich auf einem Himbeer-Pi laufen. Jede Hilfe wäre dankbar.
Antworten:
Sie können das Python-
os
Modul verwenden, um diese Informationen zu erhaltenuname
:Diese Funktion sollte Plattform- und andere Informationen zu den meisten Linux- oder Unix-ähnlichen Distributionen bereitstellen.
Aus der Python-Dokumentation:
quelle
os.uname()[4][:3] == 'arm'
startswith
nichtstartsWith
. Danke, es hat geholfen.Ich fand, dass Sie das Pi-Modell und die Version von erhalten können:
/ sys / firmware / devicetree / base / model
Beispiel: Raspberry Pi 3 Model B Rev. 1.2
Ich habe ein Shell-Skript, um danach zu suchen und den Inhalt zurückzugeben, falls er existiert. Ein OS-Aufruf zum Lesen der Datei, falls vorhanden, sollte Sie in Ordnung bringen. Die Prämisse ist, wenn es nicht existiert, ist es definitiv kein RPi. Ist dies der Fall, überprüfen Sie den Inhalt, um sicherzugehen.
quelle
Dies ist eher ein Problem mit dem Aufkommen des Pi 2 (das nicht einfach vom Beaglebone Black zu unterscheiden ist). Die höchste Detailstufe finden Sie in / proc / cpuinfo auf Linux-basierten Systemen (die 'Hardware'-Zeile). Hier ist ein Beispiel für das Parsen aus dem Adafruit-GPIO-Code:
https://github.com/adafruit/Adafruit_Python_GPIO/blob/master/Adafruit_GPIO/Platform.py
quelle
Die besten allgemein anwendbaren systemidentifizierenden Informationen, die ich gefunden habe, waren:
Dies scheint die gleiche Ausgabe wie der Shell-Befehl zu liefern
uname -a
. In den meisten Fällen ist die zurückgegebene Ausgabe im Wesentlichen dieselbe (ein String anstelle eines 5-Tupels) wie die vonos.uname()
.Diejenigen, die ich getestet habe und die entsprechende Ausgabe gefunden habe, sind OSX 10.9.5, Ubuntu 14.04 und Raspbian (??) Wheezy. Auf einem Synology NAS erhalte ich jedoch weitere Informationen aus der
platform._syscmd_uname('-a')
Version:Wenn Sie "Synology" in der Ausgabe sehen, ist dies eine Umgebung, in der sich Dinge unerwartet verhalten.
quelle
Auf PI 3
Weil:
quelle
Bessere Vorgehensweise (Python- Code-Snippet ):
quelle