Mam skrypt w języku Python, który używa sys.platform.startswith („linux”) do testowania, czy działa na Linuksie, czy nie, ale nie mogę odróżnić procesora x86 / 64 od ARM raspberry pi edytor.
Powodem, dla którego tego potrzebuję, jest uruchomienie zewnętrznego skryptu skompilowanego dla systemu Mac, Linux x86 / 64 lub Linux ARM dla Raspberry Pi.
Z tego, co mogę powiedzieć, tak naprawdę nie ma jednolitego sposobu na stwierdzenie, że tak naprawdę używasz malinowego pi. Każda pomoc będzie mile widziana.
Odpowiedzi:
Możesz użyć
os
modułu Pythona, aby uzyskać te informacje poprzezuname
:Ta funkcja powinna dostarczać informacje o platformie i inne informacje o większości dystrybucji podobnych do Linuksa lub Uniksa.
Z dokumentacji Python:
źródło
os.uname()[4][:3] == 'arm'
startswith
nie jeststartsWith
. Dzięki, pomogło.Odkryłem, że możesz pobrać model Pi i wersję z:
/ sys / firmware / devicetree / base / model
Np .: Raspberry Pi 3 Model B Rev 1.2
Mam skrypt powłoki, aby tego szukać i zwracać zawartość, jeśli istnieje. Wywołanie systemu operacyjnego w celu odczytania pliku, jeśli istnieje, powinno cię odpowiednio ustawić. Założeniem jest, jeśli nie istnieje, to zdecydowanie nie jest RPi. Jeśli tak, sprawdź zawartość, aby się upewnić.
źródło
Jest to bardziej problem z pojawieniem się Pi 2 (które nie jest łatwe do odróżnienia od Beaglebone Black). Najwyższy poziom szczegółowości znajduje się w / proc / cpuinfo w systemach Linux (linia „Sprzęt”). Oto przykład analizy, który pochodzi z kodu GPIO Adafruit:
https://github.com/adafruit/Adafruit_Python_GPIO/blob/master/Adafruit_GPIO/Platform.py
źródło
Najlepsze powszechnie stosowane informacje identyfikujące system to:
Wydaje się, że daje to samo wyjście, co polecenie powłoki
uname -a
. W większości przypadków zwracane dane wyjściowe są zasadniczo takie same (ciąg zamiast 5 krotek) jak w przypadkuos.uname()
.Te, które przetestowałem i znalazłem równoważne wyjścia to OSX 10.9.5, Ubuntu 14.04 i Raspbian (??) Wheezy. Jednak na serwerze Synology NAS otrzymuję więcej informacji z
platform._syscmd_uname('-a')
wersji:Widzenie „synologii” na wyjściu oznacza, że jest to środowisko, w którym rzeczy zachowują się nieoczekiwanie.
źródło
Lepszy sposób na zrobienie tego ( fragment kodu w języku Python ):
źródło
Na PI 3
Dlatego:
źródło