我有一个 Raspberry Pi 4,显示屏为 1280x800,没有键盘或鼠标。我通过 WiFi 远程 ssh 进入它,并对它进行编码以显示图像,最终无需我 ssh 进入它。我安装了 feh 并在 python 脚本中使用它来显示图像:
import subprocess
image = subprocess.Popen(["feh", "--hide-pointer", "-x", "-q", "-B", "black", "-g", "1280x800", "./test.jpg"])
如果我事先在命令行中输入
export DISPLAY=:0.0
,我就可以让这段代码工作。但是,我希望在启动时自动执行此操作,以便我也可以在启动时运行 python 代码并让它自主运行。我尝试将该行放入 /etc/profile 中,但没有成功。
很抱歉我的操作系统太幼稚——这确实是一个弱点。并提前感谢您的任何帮助。
是对的,将
export DISPLAY=:0.0
添加到
/etc/profile
不会起作用,因为它仅对登录 shell 会话有效。
要在启动时设置显示环境变量,需要将其添加到运行级别脚本中。以下是执行此操作的两种方法:
方法 1:使用
/etc/rc.local
-
使用
sudo nano /etc/rc.local
编辑/etc/rc.local
文件。 -
在
exit 0
行之前添加以下行:
export DISPLAY=:0.0
- 保存并关闭文件。
现在,在启动时,将在
/etc/rc.local
文件中运行的命令将设置
DISPLAY
环境变量。
方法 2:创建 systemd 服务
- 创建一个新的 systemd 服务文件:
sudo nano /etc/systemd/system/display-env.service
- 将以下内容粘贴到文件中:
[Unit]
Description=Set Display Environment Variable
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'export DISPLAY=:0.0'
[Install]
WantedBy=multi-user.target
-
保存并关闭文件。
-
启用并启动服务:
sudo systemctl enable display-env.service
sudo systemctl start display-env.service
这将创建一个在启动时运行的 systemd 服务,该服务将设置
DISPLAY
环境变量。
重要提示:
-
确保的 Python 脚本具有执行权限 (
chmod +x your_script.py
)。 -
可以使用
crontab
在启动时自动运行 Python 脚本。将@reboot python /path/to/your/script.py &
添加到的 crontab 文件 (crontab -e
) 中。
使用这两种方法中的任何一种,都可以成功地在 Raspberry Pi 启动时设置
DISPLAY
环境变量,并使的 Python 脚本无需手动登录即可运行。