如何使用 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
)以激活新规则。
我正在用 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
)以激活新规则。