Raspberry Pi Python (Kivy) 使用 sudo 非常慢

Raspberry Pi Python (Kivy) extremely slow with sudo

我一直在 Raspberry Pi 上使用 KivyPie OS(Linux 为 Kivy 开发预先配置)编写 Kivy 图形程序。

出于某种原因,如果使用 sudo 启动,运行 会非常慢。 通常情况下,运行"python main.py",程序以每秒大约 30 个循环的速度运行。 但是,如果我这样做 "sudo python main.py",它运行的速度慢到每 5-10 秒 1 个周期。

我需要使用 sudo 来访问 Raspberry 的 GPIO。 (除非我尝试其他方式去做,我看到人们在讨论)。

不过,我感兴趣的是,使用 sudo 导致性能大幅下降的原因可能是什么?是否可以解决这个问题?

PS: 运行 在我的电脑 (Linux) 上使用和不使用 sudo 的相同程序似乎不会导致此类问题。仅限树莓派。

好吧,我认为这个问题已经解决了,即使还有一些问题。

这里是关键点:

  • 速度变慢的原因是 Kivy 无法在 "sudo" 下加载正确的视频驱动程序,而是使用软件渲染。
  • 我还没弄明白为什么驱动程序没有加载 sudo 或如何修复它。然而...
  • 用Pyinstaller编译程序后,一切正常。可执行文件可以用 sudo 启动,GPIO 正在工作,Kivy 加载适当的驱动程序,一切都运行得很快,正如它应该的那样。

综上所述,初步问题的原因找到了,直接用Python启动程序还没有找到解决方法,但是用Pyinstaller编译程序解决了。 (仍然不是一种方便的调试方式。)

问题是 Kivy 正在为 root 用户使用另一个 config.ini 文件,而不是您在 ~/.kivy/config.ini.

中的文件

在 python 文件的顶部,您可以添加以下内容以强制它使用 egl_rpi window:

import os
os.environ['KIVY_WINDOW'] = 'egl_rpi' 

或者,您可以使用以下方法将 ini 文件复制到根目录:

sudo cp ~/.kivy/config.ini /root/.kivy/config.ini