这篇文章上次修改于 2173 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
最近写了个商品价格定时查询的小程序,部署到树莓派上做开机启动。
在使用python命令运行时一切正常,当写到 rc.local
文件中时遇到这个问题。
首先要查看日志,通过在 rc.local
文件头将:
#!/bin/sh
修改为
#!/bin/sh -x
日志输出到 var/log/boot.log
文件中
通过查看 boot.log
文件发现报错 ImportError
这个问题就有点诡异了,后来通过查询,得知原因所在,真得是很难想到
“用户”
因为 rc.local
是由 root 用户运行的,而我一直是在一个叫 pi 的用户下安装环境,部署程序,所以在开机启动时,rc.local
中执行时在 root 这个用户下查找 python 的环境,包引用,所以出现了 ImprtError:No module named xxx 。
解决
将:
/usr/bin/python3 /home/pi/xxxxxxx.py
修改为
sudo -H -u pi /usr/bin/python3 /home/pi/xxxxxxx.py
使用指定的用户运行脚本
2019/3/4.
Dean.King
Beijing
没有评论