解决思路:在终端中先确认你的py文件可以执行
关于树莓派开机自启动python程序一共好几种方法,总结的比较全的是这篇文章:
主要有三种途径:
1.在/etc/rc.local文件中写入执行python程序的语句,因为开机会执行该文件。
2.将程序注册为服务启动。
3.通过桌面启动,即在/home/pi/.config/目录下新建一个名为 autostart 的文件夹,新建xxx.desktop文件,写入执行语句。
以上三点具体操作请看所附链接教程。
说实话,最开始我将三种方法都试了一遍,但全部失败。
解决方案如下
我的错误在于python程序本身,各位如果没有按照上述教程只是建立一个test.py,而和我一样直接操作了自己需要启动的py文件,那么一定要在终端执行以下语句:
python /home/pi/yourPy.py &
& 代表将该程序在后台运行
如果你的命令需要长时间运行(例如死循环)或者运行后不能退出,那么你必须确保在命令的最后添加“&”符号让命令运行在其后台。
由于种种原因,比如依赖包安装位置、数据库路径是相对路径等,本身在ide中执行正常的py程序,在终端执行时会出现种种错误,修改好所有bug,再次在终端执行无误。
即可通过第一种方法在/etc/rc.local中添加相应执行语句完成开机自动运行。
需要注意
- 在rc.local文件中应写为
su命令是指定在pi用户下执行这条命令,-c 表示执行完这条命令之后恢复原来的用户。su pi -c “python3 /home/pi/yourPy.py &”
- 写在 exit 0之前,在此之前添加的代码在启动时都会被执行,执行效果和在终端中执行一样。