У меня есть сценарий Python, который использует sys.platform.startswith ('linux'), чтобы проверить, работает ли он на Linux или нет, но тогда я не могу определить разницу между процессором x86 / 64 и ARM Raspberry Pi процессор.
Причина, по которой мне это нужно, состоит в том, чтобы запустить внешний скрипт, скомпилированный для mac, linux x86 / 64 или linux ARM для raspberry pi.
Из того, что я могу сказать, на самом деле нет единого способа сказать, что вы на самом деле работаете на малиновом пи. Любая помощь будет оценена.
Ответы:
Вы можете использовать
os
модуль Python для получения этой информации черезuname
:Эта функция должна предоставлять платформу и другую информацию о большинстве Linux или Unix-подобных дистрибутивов.
Из документации Python:
источник
os.uname()[4][:3] == 'arm'
startswith
не такstartsWith
. Спасибо, это помогло.Я нашел, что вы можете получить модель и версию Pi от:
/ SYS / прошивки / devicetree / база / модель
Пример: Raspberry Pi 3 Model B Rev 1.2
У меня есть сценарий оболочки, чтобы найти это и вернуть содержимое, если оно существует. Вызов ОС для чтения файла, если он существует, должен вас правильно настроить. Посылка, если она не существует, это определенно не RPi. Если это так, то проверьте содержимое, чтобы быть уверенным.
источник
Это скорее проблема с появлением Pi 2 (который не так просто отличить от Beaglebone Black). Наивысший уровень детализации находится в / proc / cpuinfo для систем на основе Linux (строка «Оборудование»). Вот пример анализа этого из кода Adafruit GPIO:
https://github.com/adafruit/Adafruit_Python_GPIO/blob/master/Adafruit_GPIO/Platform.py
источник
Лучшая широко применяемая система идентификации информации, которую я нашел, была с:
Похоже, это дает тот же вывод, что и команда оболочки
uname -a
. В большинстве случаев возвращаемый результат по существу такой же (строка вместо 5-кортежа), как и уos.uname()
.Те, что я протестировал и нашел эквивалентные результаты, это OSX 10.9.5, Ubuntu 14.04 и Raspbian (??) Wheezy. Однако на NAS-устройстве Synology я получаю больше информации из
platform._syscmd_uname('-a')
версии:Видя «синологию» в выходных данных, вы определяете ее как среду, в которой вещи ведут себя неожиданно.
источник
Лучший способ сделать это ( фрагмент кода Python ):
источник
На пи 3
Потому что:
источник