我有 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()
?