首页 > 编程问答 >如何在启动时设置 Raspberry Pi 上的显示环境变量?

如何在启动时设置 Raspberry Pi 上的显示环境变量?

时间:2024-07-23 07:57:47浏览次数:14  
标签:python raspberry-pi raspberry-pi4

我有一个 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

  1. 使用 sudo nano /etc/rc.local 编辑 /etc/rc.local 文件。

  2. exit 0 行之前添加以下行:

export DISPLAY=:0.0
  1. 保存并关闭文件。

现在,在启动时,将在 /etc/rc.local 文件中运行的命令将设置 DISPLAY 环境变量。

方法 2:创建 systemd 服务

  1. 创建一个新的 systemd 服务文件:
sudo nano /etc/systemd/system/display-env.service
  1. 将以下内容粘贴到文件中:
[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
  1. 保存并关闭文件。

  2. 启用并启动服务:

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 脚本无需手动登录即可运行。

标签:python,raspberry-pi,raspberry-pi4
From: 78747442

相关文章

  • 从Python中的列表列表中提取随机列表选择
    我有一个从图像生成的RGB值列表:color_list=[(192,155,120),(132,81,65),(226,226,199),(76,94,117),(140,157,178),(17,34,54),(217,213,139),(134,171,144),(98,123,95),(109,145,96),(181,109,92),(71,47,39),......
  • 这段代码是否保证Python对象被立即删除?
    我正在将Redis异步客户端与Celery一起使用,但在两者之间的集成方面遇到了一些问题。上下文是我需要删除redis.Redis实例(在构造函数中创建)以便关闭连接(该对象有一个close方法,但当asyncio事件循环关闭时我无法使用它,heal_client方法仅在这些情况下才会使用。我的代码如......
  • python selenium 行为错误:AttributeError:“Context”对象没有属性“driver”
    我正在使用pythonselenium与Behavior包一起工作。这是代码:@given('theuserisontheloginpage')defstep_given_user_on_login_page(context):PATH='C:/Users/PycharmProjects/ui_test/chromedriver-win32/chromedriver.exe'context.driver=......
  • python 脚本中的路点用于处理大数据集
    我编写了一个脚本,将一堆来自api的请求写入csv文件。该api中有数千个请求,并且在结束循环/退出程序之前永远不会结束。如何合并航路点,以便如果再次发生停顿,它会自动继续前进并最终打印所有请求?我尝试了一些不起作用的方法,但我不知道下一步该怎么做。以下是使用航路点......
  • Python 中的 SSL 模块不可用(在 OSX 上)
    我在OSX10.13上的virtualenv中运行时遇到问题。我已经运行了pipinstall并且路径brewinstallopenssl指向/usr/local/include/openssl有谁知道如何解决这一问题?在我重新安装../opt/openssl/include/openssl使用python后,这种......
  • AWS Elastic Beanstalk chown PythonPath 错误
    我正在AWS的elasticbeanstalk上部署一个Web应用程序,遇到了同样的错误:[StageApplication].Stoprunningthecommand.Error:chown/var/app/staging/venv/bin/python:nosuchfileordirectory.我在我的环境配置中看到属性:PYTHONPATH:/var/......
  • Python:支持索引的内存对象数据库?
    我正在做一些数据整理,如果我可以将一堆字典放入内存数据库中,然后对其运行简单的查询,这会简单得多。例如,类似:people=db([{"name":"Joe","age":16},{"name":"Jane","favourite_color":"red"},])over_16=db.filter(age__g......
  • 如何构建一维数组的二维数组的特定 Python 结构?
    如何构建一维数组(即行向量)的二维数组的特定结构以满足特定我正在维护的遗留程序的结构?我可以在此结构中生成正确的内容all_measurements[:12]array([[0.,0.,0.,2.],[0.02,0.334,0.04,2.24],[0.04,0.668,0.08,2.48],...........
  • 如何使用 Python Flask 将新的咖啡馆(元素)添加到数据库(SQLite)?
    这是我的代码:@app.route("/add",methods=["POST"])defpost_new_cafe():new_cafe=Cafe(name=request.form.get("name"),map_url=request.form.get("map_url"),img_url=request.form.get("img......
  • 使用 tkinter 为 python 创建 GUI 时如何解决语法错误?
    我是一名Python初学者,决定使用tkinter制作一个小型GUI,该GUI接受用户(潜在餐馆)的3个输入,然后单击按钮后随机输出其中一家餐馆。我不断收到语法错误,并认为它与我的buttonfunc或调用它的命令有关。此代码尚未包含在GUI上输出餐厅的任何位置。任何帮助将不胜感激#Pyth......