如何在树莓派开机时自动设置DISPLAY环境变量?
解决树莓派4开机自动运行feh显示图片的问题
方法1:修改Python脚本,直接指定环境变量
不用折腾系统级环境变量,直接在脚本里给feh传DISPLAY参数:
import subprocess import os # 复制当前环境变量并添加DISPLAY env = os.environ.copy() env["DISPLAY"] = ":0.0" # 调用feh,注意把./test.jpg换成绝对路径,比如/home/pi/test.jpg image = subprocess.Popen( ["feh", "--hide-pointer", "-x", "-q", "-B", "black", "-g", "1280x800", "/home/pi/test.jpg"], env=env )
一定要用绝对路径指定图片,不然开机时脚本的工作目录可能不对,找不到图片。
方法2:桌面自启项(适合带桌面的系统)
树莓派默认桌面会加载用户的自启配置,操作步骤:
- SSH连进树莓派,创建自启配置文件:
nano /home/pi/.config/autostart/feh-image.desktop - 粘贴以下内容,把
/home/pi/你的脚本路径.py换成实际的脚本绝对路径:[Desktop Entry] Type=Application Name=Feh Image Display Exec=/usr/bin/python3 /home/pi/你的脚本路径.py Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true - 按
Ctrl+O保存,回车确认,再按Ctrl+X退出。 - 确保树莓派开机自动登录pi用户:运行
sudo raspi-config,选3 Interface Options->S5 Boot / Auto Login,选B4 Desktop Autologin,重启后生效。
这种方式会在桌面启动时自动运行脚本,此时DISPLAY已经自动设为:0.0,不用额外设置。
方法3:systemd服务(适合无桌面或后台运行场景)
如果用的是无桌面系统,或者想用systemd管理服务:
- 创建服务文件:
sudo nano /etc/systemd/system/feh-display.service - 写入以下内容,替换
/home/pi/你的脚本路径.py为实际路径:[Unit] Description=Feh Auto Display Image After=graphical.target [Service] User=pi Environment=DISPLAY=:0.0 Environment=XAUTHORITY=/home/pi/.Xauthority ExecStart=/usr/bin/python3 /home/pi/你的脚本路径.py WorkingDirectory=/home/pi/ Restart=always [Install] WantedBy=graphical.target - 启用并启动服务:
sudo systemctl daemon-reload sudo systemctl enable feh-display.service sudo systemctl start feh-display.service
这里直接在服务里指定了DISPLAY和权限相关的环境变量,确保feh能正常访问显示。
关键注意事项
- 所有路径必须用绝对路径,包括脚本、图片,避免开机时找不到文件。
- 确保pi用户有脚本和图片的读写权限,必要时用
chmod +x /home/pi/你的脚本路径.py给脚本加执行权限。
内容的提问来源于stack exchange,提问作者Dribbler
相关产品推荐
相关产品推荐

