首页 > 解决方案 > Python:使用 sudo 调用 C 函数

问题描述

我的 python 脚本正在使用 Extensions 来调用另一个必须使用 sudo 运行的 C 函数。我可以从普通的python脚本成功调用函数:

sudo python my_py_scr.py

而“my_py_scr.py”包含以下内容

import MyModule
MyModule.mymethod("in_arg")

现在我进一步开发了这个“my_py_scr.py”来执行其他功能,所以它看起来像:

import MyModule
from rgbmatrix import RGBMatrix, RGBMatrixOptions

#... some definitions

self.matrix = RGBMatrix(options = options)
MyModule.mymethod("in_arg")

现在的问题是:MyModule.mymethod没有调用嵌入式 C 函数,因为它需要 root 权限。我收到以下错误消息

Must run as root to be able to access /dev/mem
Prepend 'sudo' to the command

我在 RaspberryPi 中运行此代码。我希望如果有人明白为什么当我添加

self.matrix = RGBMatrix(options = options)

sudo 特权没有传递给

MyModule.mymethod("in_arg")

标签: pythonsudo

解决方案


事实证明,错误消息具有误导性..问题不在于 sudo 凭据,而在于 /dev/mem 的访问。

因为我正在研究 Raspberry Pi,所以两个函数(mymethod 和 RGBMatrix)都试图访问 Raspberry 的 GPIO。因此 mymethod 无法访问 GPIO,因为它被锁定。


推荐阅读