Orange Pi 4B上Python调用libgpiod报‘gpiod’不是包的问题求助
问题原因与解决方案
问题根源
- 通过
sudo apt install python3-libgpiod安装的是libgpiod官方原生Python绑定,它的API结构是直接在gpiod根模块下暴露Chip、Line、Direction、Value等类,不存在gpiod.line子模块,所以你写from gpiod.line import...会触发ModuleNotFoundError。 - 后续用
pip install gpiod安装的是第三方封装的同名包,这个包的API设计和官方绑定完全不同,没有Chip属性,因此调用gpiod.Chip会报错。 - 核心问题是两个重名包导致Python导入时混淆,加载了错误版本的模块。
解决步骤
- 卸载pip安装的第三方
gpiod包,消除冲突:pip uninstall -y gpiod - 使用官方绑定的正确导入方式:
from gpiod import Chip, Line, Direction, Value - 简单验证示例(以Orange Pi 4B的
gpiochip0为例):# 打开GPIO芯片 chip = Chip('gpiochip0') # 获取指定GPIO线(此处以第10号线为例) line = chip.get_line(10) # 配置为输出模式,初始电平低 line.request(consumer='test_app', direction=Direction.OUTPUT, default_value=Value.LOW) # 设置输出高电平 line.set_value(Value.HIGH) # 释放资源 line.release() chip.close() - 确认模块路径(排查是否还有冲突):
在Python终端执行以下命令,若输出为系统路径(如/usr/lib/python3/dist-packages/gpiod/__init__.py)则说明官方绑定正常加载:import gpiod print(gpiod.__file__)
内容的提问来源于stack exchange,提问作者Dmitry
相关产品推荐
相关产品推荐

