在使用sudo运行时,找不到名为 'board' 的模块(ModuleNotFoundError)

编程语言 2026-07-10

我正在尝试用我的Octopi/Octoprint树莓派来控制一些LED灯条。我找到了一个用于它的Python脚本在这里。我设法创建了一个虚拟环境(venv),并从那里运行我的脚本。

一开始我尝试用GPIO 17作为数据线,但出现错误,提示Gpio 17非法。现在我改用GPIO 18,据我所知,它在控制LED时更常用。运行 python leds/led_controller.py 时,出现错误

无法打开 /dev/mem:权限被拒绝

在第74行。

于是我在python命令前加上sudo:sudo python leds/led_controller.py。但现在我得到的错误

ModuleNotFoundError: No module named 'board'

在第2 行。 不以su运行时,我走得比以su运行时更远!现在我真是搞不清该怎么办。

为什么在以su运行时Python找不到这个模块,而在普通用户运行时可以找到它?

解决方案

这会发生,是因为当你用 sudo 运行脚本时,它不再使用你的虚拟环境。你的 board 模块安装在你的 venv 里,但 sudo 运行的是系统Python,它没有安装那个模块——这就是你得到 ModuleNotFoundError 的原因。

与此同时,/dev/mem: Permission denied 的错误也会出现,因为访问GPIO需要更高的权限。

在你的Python虚拟环境中用sudo运行:

sudo /path_to_your_venv/bin/python your_script.py

或者

sudo /path_to_your_venv/bin/python3 your_script.py

我认为这对你有用。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章