You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4(4GB)Ubuntu 20.10系统下RPi.GPIO库报错“Not running on a RPi!”的问题排查

解决RPi.GPIO在Ubuntu 20.10树莓派上的"Not running on a RPi!"错误

你遇到的问题确实和RPi.GPIO与Ubuntu系统的兼容性有关——RPi.GPIO库最初是为Raspberry Pi OS(原Raspbian)开发的,它依赖Raspberry Pi OS特有的硬件检测机制和底层GPIO配置,在Ubuntu这类通用Linux发行版上会因为检测不到树莓派硬件标识而抛出这个错误。

为什么会出现这个错误?

RPi.GPIO启动时会检查/proc/cpuinfo中的硬件型号、/sys/class/gpio的布局等树莓派专属标识,而Ubuntu 20.10 for Raspberry Pi的系统配置和Raspberry Pi OS存在差异,导致库无法确认当前运行在树莓派设备上,从而触发RuntimeError。

推荐的解决方案:改用gpiod库

Ubuntu官方推荐使用libgpiod(Linux GPIO用户空间库)来控制树莓派GPIO,它是通用Linux发行版的标准GPIO工具,兼容性更好。以下是迁移你的关机按钮代码到gpiod的步骤:

  1. 安装gpiod库和Python绑定:
sudo apt update && sudo apt install -y gpiod python3-gpiod

(注意:Ubuntu 20.10的Python 2.7已停止维护,建议切换到Python 3)

  1. 改写你的代码为gpiod版本:
#!/usr/bin/env python3
import gpiod
import subprocess
from time import sleep

# 定义GPIO芯片和引脚(BCM 12对应物理引脚32,树莓派的GPIO芯片通常为gpiochip0)
CHIP = gpiod.Chip('gpiochip0')
INT_LINE = CHIP.get_line(12)

# 配置引脚为输入,启用上拉电阻
line_config = gpiod.line_request()
line_config.request_type = gpiod.line_request.DIRECTION_INPUT
line_config.flags = gpiod.line_request.FLAG_BIAS_PULL_UP

INT_LINE.request(line_config)

def main():
    while True:
        # 等待引脚电平下降(按钮按下),超时设为None表示一直等待
        INT_LINE.event_wait(None)
        # 清除事件标志
        INT_LINE.event_read()
        # 等待3秒确认是长按操作
        sleep(3)
        # 检查引脚电平是否仍为低(按钮保持按下状态)
        if INT_LINE.get_value() == 0:
            # 执行关机命令
            subprocess.call(['poweroff'], shell=True, 
                            stdout=subprocess.PIPE, stderr=subprocess.PIPE)

if __name__ == '__main__':
    try:
        main()
    finally:
        # 程序退出时释放引脚和芯片资源
        INT_LINE.release()
        CHIP.close()

其他可选方案(不推荐)

如果你坚持要使用RPi.GPIO,可以尝试以下方法,但稳定性无法保证:

  • 手动修改RPi.GPIO的硬件检测逻辑:找到库的安装路径(比如/usr/lib/python2.7/dist-packages/RPi/GPIO),编辑__init__.py文件跳过硬件检测步骤,但这可能引发其他未知问题。
  • 安装社区适配的RPi.GPIO分支:部分社区维护的分支针对Ubuntu做了适配,但需要自行查找并编译安装。

总的来说,迁移到gpiod是更可靠、更符合Ubuntu生态的选择,也能避免后续版本更新带来的兼容性问题。

内容的提问来源于stack exchange,提问作者Juanma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 14:22:40