Jetson Nano开机自启脚本报错:No module named pyserial与cv2求助
问题解决步骤
1. 确认Python与pip的对应关系
systemctl脚本里用的是/usr/bin/python3,但你之前通过pip3安装的库可能不在这个Python环境的路径下。先验证两者路径是否匹配:
- 执行命令查看路径:
如果两者路径不一致(比如pip3在which python3 which pip3/home/xxx/.local/bin/pip3),说明pip3属于另一个Python环境,安装的库不会被/usr/bin/python3识别。
2. 为目标Python环境重新安装OpenCV
直接指定/usr/bin/python3对应的pip工具安装OpenCV,确保库安装到正确路径:
/usr/bin/python3 -m pip install opencv-contrib-python
安装完成后,执行以下命令确认OpenCV已被该Python环境识别:
/usr/bin/python3 -m pip list | grep opencv
3. 修正systemctl脚本的语法错误
你的服务脚本中XAUTHORITY的赋值存在多余空格,systemd的环境变量赋值不允许等号两侧有空格,修正后的脚本如下:
[Unit] Description=code on boot After=multi-user.target [Service] Environment=DISPLAY=:0 Environment=XAUTHORITY=/home/root/.Xauthority ExecStart=/usr/bin/python3 /home/root/code.py User=root TimeoutSec=infinity [Install] WantedBy=multi-user.target
4. 重启服务并验证
- 重新加载systemd配置:
sudo systemctl daemon-reload - 重启服务并查看运行状态:
(将sudo systemctl restart your-service-name.service sudo systemctl status your-service-name.serviceyour-service-name替换为你实际的服务文件名,比如code-boot.service)
额外注意事项
如果串口在自启时仍有异常,由于你使用root用户运行服务,权限通常足够,但可以确认串口设备(如/dev/ttyTHS1)的权限:
ls -l /dev/ttyTHS1
确保root用户拥有读写权限。
内容的提问来源于stack exchange,提问作者Shivanchal Asthana
相关产品推荐
相关产品推荐

