Raspberry pi、python、检测os

Raspberry pi, python, detect os

我正在开发一个 Django 应用程序,它将 运行 在 raspberry pi 3 上投入生产。

我必须在应用程序启动时知道它 运行ning 是在树莓派上还是在开发环境中。在开发中,我使用假传感器数据而不是引脚。

直到现在我使用这个方法:

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

这对我的电脑和 mac 都很好用,但现在我想将其部署到在线 ubuntu 网络服务器。 Raspbian 也是一个 linux 分区,所以我需要其他东西。

这是我目前有效的解决方案,但它伤害了我内心深处。有什么改进的建议吗?

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

您的解决方案基本上没问题 - 我会改进它以仅捕获您真正要查找的特定错误:

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

这样,如果发生其他错误(内存不足、control-c 时间不当等),您将不会相信自己处于测试环境中,而实际上您并非如此。您还可以添加更多检查以确保万无一失(例如,如果您在 linux 上,则只检查 import RPi.GPIO)。

这个帖子中有很好的信息: 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')