我有一个在Raspberry Pi Zero W上运行的Python脚本,该脚本调用图像程序feh,以循环浏览某些目录并显示随附的图像。该脚本应该在启动时运行-将其视为一种无头的图像显示程序。我没有运行Stretch的最新版本,而是2018年10月发布的版本。
为了使所有内容都能在启动时运行,我编辑了〜/ .config / lxsessions / LXDE-pi / autostart文件。我使用的是外部投影仪,因此为了正确显示图像,我的自动启动文件如下所示:
DISPLAY=:0
/usr/bin/python /home/pi/myscript.py
然后我的Python脚本基本上看起来像
import os
import psutil
import time
while True:
os.system('feh --hide-pointer -x -q -B black -g 1280x720 ' + img_dir + ' &')
time.sleep(4)
for process in psutil.process_iter():
if 'feh' in process.cmdline():
process.terminate()
,然后遍历不同的图像目录。我知道不建议使用os
进行系统调用,但这是我可以使该特定调用起作用的唯一方法。
这就是问题所在:如果我从命令行重新启动Pi,一切都会顺利进行。 Pi启动,Python开始运行,并且图像正确显示,并永远循环。但是,如果我冷启动,则仅运行Python脚本-不显示任何图像。我知道这种情况的发生是因为我可以远程登录并看到Python程序确实在运行,但是feh
没有运行,而重新启动后正在运行。
我认为可能与此有关的另一件事是,我在Pi的投影仪/显示器进入睡眠状态时遇到了问题(即一分钟左右没有外部输入后就变黑了),所以我编辑了{{ }}文件并添加
/etc/lightdm/lightdm.conf
feh怎么了?我是否可以查看某个地方的日志文件,看看是否抛出任何错误?我的不睡觉电话会把事情搞砸吗?为什么Python可以运行而不会失败呢?欢迎在这里输入任何内容!
答案 0 :(得分:0)
对于遇到此问题的任何人,答案是睡一会儿。在自动启动文件中,添加以下行
sleep 5
之间
DISPLAY=:0
和
/usr/bin/python /home/pi/myscript.py
显然允许所有必需的显示驱动程序在feh和Python脚本启动之前加载。只要您不介意等待几秒钟,问题就解决了。