我正在Kivy写一个应用程序,该应用程序的一部分是在一定时间后关闭rpi显示器的背光,并在按下隐形按钮时重新打开背光。我需要在启动应用程序时使用sudo python来打开文件:
/sys/class/backlight/rpi-backlight/bl_power
问题是默认情况下,在使用'sudo python'时,我收到一条错误,上面写着“没有名为kivy.app的模块”。如果我添加该行:
Defaults env_keep += "PYTHONPATH"
到/ etc / sudoers文件,它允许我使用'sudo python'运行应用程序,但然后应用程序上没有任何按钮功能。该应用程序运行,但触摸功能丢失。有没有办法使这项工作?
答案 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
并授予组写权限。默认情况下,用户pi
是video
的成员。然后,您只需重新启动(或sudo udevadm control --reload-rules
后跟sudo udevadm trigger
)即可激活新规则。