Raspberry pi,python,检测操作系统

时间:2016-12-15 12:25:52

标签: python django raspberry-pi3

我正在开发一款django应用程序,它将在生产中运行在树莓派3上。

我必须知道应用程序的开头是否在覆盆子或开发环境中运行。在开发中我使用假传感器数据而不是引脚。

到目前为止,我使用了这种方法:

from sys import platform as _platform
test_environment = "win" in _platform or "darwin" in _platform

这对我的电脑和Mac都很好用,但现在我想将它部署到ubuntu网络服务器上。 Raspbian也是一个linux dist,所以我需要别的东西。

这是我目前正在使用的解决方案,但它深深地伤害了我。有什么建议让它更好吗?

try:
    import RPi.GPIO as gpio
    test_environment = False
except:
    test_environment = True

2 个答案:

答案 0 :(得分:2)

你的解决方案基本上没问题 - 我会改进它以捕捉你真正想要的具体错误:

try:
  import RPi.GPIO as gpio
  test_environment = False
except (ImportError, RuntimeError):
  test_environment = True

这样一来,如果发生其他一些错误(内存不足,控制时间不合理等),你就不会相信自己处于测试环境中。您还可以添加更多检查以确定(例如,如果您使用的话,只需检查import RPi.GPIO)。

答案 1 :(得分:0)

此线程中有很好的信息: https://raspberrypi.stackexchange.com/questions/5100/detect-that-a-python-program-is-running-on-the-pi

import platform
def is_raspberry_pi() -> bool:
    return platform.machine() in ('armv7l', 'armv6l')