3

我有 Pi Zero 运行 Raspbian Buster Lite,没有连接显示器。它在启动时运行一个 python 程序(crontab @reboot 条目),如下所示:

@reboot sudo su username /home/username/launcher.sh >> /home/username/crontab.log 2>&1

我必须初始化 pygame 显示,因为我需要处理 Sound 对象结束事件。如果不初始化显示,则不会触发事件。

代码在这一行中断,出现错误“pygame.error:无法打开控制台终端”

    os.putenv('SDL_VIDEODRIVER', 'dummy')
    pygame.display.init()  # error at this line

我的代码曾经在以前的 Raspbian (Stretch) 版本中工作。我已经尝试过各种驱动程序,添加/删除pygame.display.set_mode((1, 1)),但没有运气。

我知道其他解决相同问题的帖子,但我已经用尽了所有这些方法 - 将驱动程序更改为 fbcon,跳过 set_mode 行等。唯一有效的是以 root 身份运行程序:

@reboot /home/username/launcher.sh >> /home/username/crontab.log 2>&1

但从安全的角度来看,这是一个坏主意。我宁愿以非特权用户身份运行它。

有没有一种新的破解方法可以让它过去display.init()

4

0 回答 0