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

Python 如何使用sudo运行Kivy应用程序?,python,permissions,kivy,raspberry-pi2,Python,Permissions,Kivy,Raspberry Pi2,我正在用Kivy编写一个应用程序,该应用程序的一部分是在一定时间后关闭rpi显示屏的背光,并在按下不可见按钮时重新打开背光。我需要在启动应用程序时使用sudo python才能打开文件: /sys/class/backlight/rpi-backlight/bl_power 问题是,在默认情况下,当使用“sudopython”时,我会得到一个错误,说“没有名为kivy.app的模块”。如果我添加该行: Defaults env_keep += "PYTHONPATH" 对于/etc/s

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

/sys/class/backlight/rpi-backlight/bl_power
问题是,在默认情况下,当使用“sudopython”时,我会得到一个错误,说“没有名为kivy.app的模块”。如果我添加该行:

Defaults    env_keep += "PYTHONPATH"

对于/etc/sudoers文件,它允许我使用“sudopython”运行应用程序,但应用程序函数上没有任何按钮。应用程序运行,但触摸功能丢失。有没有一种方法可以实现这一点?

我建议一种不同的方法:让运行Python脚本的用户可以写
/sys/class/backlight/rpi backlight/bl\u power
(很可能是
pi
)。暂时,这可以通过

sudo chmod a+w /sys/class/backlight/rpi_backlight/bl_power
(这将向所有用户授予写入权限)。但这也将在下次重新启动时重置。解决这个问题的办法是写一篇文章。他们生活在
/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控件--重新加载规则
,然后是
sudo udevadm触发器
)即可激活新规则。

这就是我要找的。我爱你!