启动时未导入模块 运行 python 脚本

Module not imported running python script at startup

对于上下文,我使用的是 Raspberry Pi 模型 3B+。目前我正在尝试在 Pi 启动时 运行 一个 python 脚本。该脚本使用模块 face_recognition,当 运行 正常或通过终端连接时一切正常。 但是,一旦我尝试 运行 在 pi 启动时自动启用它,我就会收到以下错误:

Traceback (most recent call last):
  File "/home/pi/Desktop/code/please_work_2.py", line 6, in <module>
    import face_recognition
ImportError: No module named face_recognition

我在谷歌上搜索了一下,我认为这与未在服务文件中正确设置环境有关。现在有点乱,但我是处理这些文件的新手,所以我正在努力寻找如何让它工作。我现在的服务档案:

[Unit]
Description=Start Bling

[Service]
Environment=DISPLAY=:0
WorkingDirectory=/home/pi/facial_recognition
Environment=XAUTHORITY=/home/pi/.Xauthority
Environment="prog_path"=/home/pi/facial_recognition
ExecStart=/usr/bin/python /home/pi/facial_recognition/run_on_start.py
Restart=always
RestartSec=10s
KillMode=process
TimeoutSec=infinity

[Install]
WantedBy=graphical.target

该程序不一定需要 运行 在桌面自动登录中,因此如果控制台版本中有可能的修复也很好。我目前只有这种方式,所以更容易检查程序是否按预期工作。

编辑: 我也尝试过使用 crontab,但重启后什么也没有发生。末尾有或没有“&”。 截至目前,正如下面所建议的那样,当我添加

User = pi

该程序确实启动了,但我很难让它每 10 秒启动一次。删除该位无济于事,因为它根本停止启动。

你能不能试试这个,在[Service]下添加下面的User=pi,看看是否有效。

我认为你是这样做的,你试图以另一个用户或 sudo 用户的身份启动,你的东西只安装在你当前的 pi 用户路径中,所以尝试以用户 pi 的身份启动脚本。

您的服务文件应如下所示。

[Unit]
Description=Start Bling

[Service]
User=pi
Environment=DISPLAY=:0
WorkingDirectory=/home/pi/facial_recognition
Environment=XAUTHORITY=/home/pi/.Xauthority
Environment="prog_path"=/home/pi/facial_recognition
ExecStart=/usr/bin/python /home/pi/facial_recognition/run_on_start.py
Restart=always
RestartSec=10s
KillMode=process
TimeoutSec=infinity

[Install]
WantedBy=graphical.target