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

How to run Kivy app using sudo?

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

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

问题是,默认情况下,我在使用 'sudo python' 时收到一条错误提示 "no module named kivy.app"。如果我添加以下行:

Defaults    env_keep += "PYTHONPATH"

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

我建议采用不同的方法:使 /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)以激活新规则。