树莓派4B 64位系统Python3.9环境开机启动脚本配置问题
树莓派4B(64位Raspi OS)Python3.9脚本开机自启动解决方案
问题背景
需要在树莓派4B的64位Raspi OS系统、Python3.9环境下实现Python脚本开机自启动,尝试通过launcher.sh脚本激活虚拟环境并运行脚本,但遇到模块找不到的问题。
最初尝试及问题
编写的launcher.sh脚本内容如下:
cd /home/pi/thefolder PYTHONPATH=/home/pi/.local/lib/python3.9/site-package source envname/bin/activate pyhton3 /home/pi/thefolder/run.py
执行后触发ModuleNotFoundError(Pandas模块找不到),说明python3并未在虚拟环境中执行。
排查过程
- 测试虚拟环境激活命令
创建测试脚本test.sh:
source envname/bin/activate echo Hi Stackoverflow
赋予执行权限后用sh test.sh运行,输出:
test.sh 1: source: not found Hi Stackoverflow
但在终端中可正常激活虚拟环境,说明脚本执行环境与终端环境存在差异。
定位环境差异原因
发现系统默认的sh指向/bin/dash,而非bash,source命令在dash中不被支持。替换命令测试
将source替换为POSIX兼容的.命令,修改测试脚本为:
. envname/bin/activate echo Hi Stackoverflow
测试后可正常激活虚拟环境。
最终解决方案
修改launcher.sh脚本,将source envname/bin/activate替换为. envname/bin/activate,必须将该激活命令放在脚本第一行,否则会出现file envname cannot be found错误。同时注意修正原脚本中pyhton3的拼写错误为python3,完整脚本示例:
. /home/pi/thefolder/envname/bin/activate cd /home/pi/thefolder PYTHONPATH=/home/pi/.local/lib/python3.9/site-package python3 /home/pi/thefolder/run.py
内容的提问来源于stack exchange,提问作者Towlie
相关产品推荐
相关产品推荐

