You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3B+开机自启Python脚本提示face_recognition模块未导入如何解决

问题根因
  1. 初始导入face_recognition失败:你是在pi用户下通过pip安装的该库,默认仅对pi用户的Python环境生效,systemd服务不加User参数时默认以root身份运行,root环境下没有安装对应依赖,因此导入报错。
  2. 加User=pi后每10秒重启:你配置了Restart=always规则,只要Python脚本运行结束(无论正常退出还是异常报错退出),systemd都会按照你设置的RestartSec=10s间隔自动重启服务,属于配置规则导致的预期外行为。
修复方案

1. 修正systemd服务配置

将你的service文件替换为如下内容,注意对应修改你自己的Python版本路径:

[Unit]
Description=Start Bling
# 不需要桌面环境的话可以配置为等待多用户模式启动完成,不需要等图形界面加载
After=multi-user.target

[Service]
User=pi
Group=pi
WorkingDirectory=/home/pi/facial_recognition
# 注意树莓派默认/usr/bin/python指向Python2,如果你是用Python3安装的依赖,这里要改为/usr/bin/python3
ExecStart=/usr/bin/python3 /home/pi/facial_recognition/run_on_start.py
# 仅在脚本异常退出时重启,正常运行结束不需要重启,如果你是单次运行的脚本可以直接设置为Restart=no
Restart=on-failure
RestartSec=10s
KillMode=process
TimeoutSec=infinity
# 补充用户Python库路径,避免找不到pip安装的依赖,路径可以通过pi用户执行`python3 -c "import site; print(site.getusersitepackages())"`获取后替换
Environment=PYTHONPATH=/home/pi/.local/lib/python3.9/site-packages

[Install]
# 不需要桌面环境就用multi-user.target,开机到控制台即可启动,需要桌面自启就改回graphical.target
WantedBy=multi-user.target

2. 验证依赖与运行逻辑

  • 先以pi用户身份手动执行完整的启动命令,比如/usr/bin/python3 /home/pi/facial_recognition/run_on_start.py,确认脚本可以正常运行没有报错
  • 执行python3 -c "import face_recognition; print('load success'),确认依赖可以正常导入

3. 排查异常重启问题

如果调整配置后仍然出现重启,执行sudo journalctl -u 你的服务文件名.service -f查看服务运行日志,定位脚本的报错原因,常见问题包括:摄像头权限不足、脚本内用了相对路径找不到对应文件、常驻循环逻辑异常退出。

4. 生效配置

修改完service文件后依次执行以下命令生效:

  • sudo systemctl daemon-reload 重载systemd配置
  • sudo systemctl enable 你的服务文件名.service 开启开机自启
  • sudo systemctl start 你的服务文件名.service 手动启动测试运行状态

内容的提问来源于stack exchange,提问作者Luc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:15:04