如何使用sudo运行Kivy应用程序?

时间:2016-01-27 16:29:42

标签: python permissions kivy raspberry-pi2

我正在Kivy写一个应用程序,该应用程序的一部分是在一定时间后关闭rpi显示器的背光,并在按下隐形按钮时重新打开背光。我需要在启动应用程序时使用sudo python来打开文件:

/sys/class/backlight/rpi-backlight/bl_power

问题是默认情况下,在使用'sudo python'时,我收到一条错误,上面写着“没有名为kivy.app的模块”。如果我添加该行:

Defaults    env_keep += "PYTHONPATH"

到/ etc / sudoers文件,它允许我使用'sudo python'运行应用程序,但然后应用程序上没有任何按钮功能。该应用程序运行,但触摸功能丢失。有没有办法使这项工作?

1 个答案:

答案 0 :(得分:0)

我建议采用不同的方法:将/sys/class/backlight/rpi-backlight/bl_power写入运行Python脚本的用户(很可能是pi)。暂时可以使用

完成
sudo chmod a+w /sys/class/backlight/rpi_backlight/bl_power

(这授予所有用户写权限)。但是这也将在下次重启时重置。解决方案就是写一个udev rule。他们住在/etc/udev/rules.d,在我的系统上,99-com.rules是一个很好的起点。以下是我在名为98-backlight.rules的文件中的内容:

SUBSYSTEM=="backlight", PROGRAM="/bin/sh -c 'chown -R root:video /sys/class/backlight && chmod -R 770 /sys/class/backlight; chown -R root:video /sys/devices/platform/rpi_backlight && chmod -R 770 /sys/devices/platform/rpi_backlight'"

这会将所有者组更改为video并授予组写权限。默认情况下,用户pivideo的成员。然后,您只需重新启动(或sudo udevadm control --reload-rules后跟sudo udevadm trigger)即可激活新规则。