树莓派重启时Crontab执行Bash脚本提示Python模块找不到
解决Crontab重启运行Python脚本找不到模块的问题
核心原因
Cron运行时的环境变量和手动终端执行时完全不同——它不会加载用户的~/.bashrc或~/.profile配置,导致python命令指向的解释器版本,和你安装adafruit_tca9548a模块的那个Python解释器不一致,最终触发模块找不到的错误。
具体解决方法
1. 使用Python解释器的绝对路径
先在终端里找到你安装模块的Python解释器路径:
which python # 若用Python3则执行 which python3
比如输出是/usr/local/bin/python3,修改你的Launcher2.bash脚本,把python替换成这个绝对路径:
cd /home/raspberrypi/Desktop/Spring2023 /usr/local/bin/python3 test_exception.py
2. 在bash脚本中加载用户环境变量
在Launcher2.bash的开头添加一行,强制加载用户的环境配置,让cron继承终端的Python环境:
source /home/raspberrypi/.profile cd /home/raspberrypi/Desktop/Spring2023 python test_exception.py
3. 直接在Crontab中指定Python路径(无需bash脚本)
修改crontab的@reboot指令,跳过bash脚本,直接用Python绝对路径执行目标脚本:
@reboot /usr/local/bin/python3 /home/raspberrypi/Desktop/Spring2023/test_exception.py >/home/pi/logs/cronlogs 2>&1
(注意替换成你实际查到的Python解释器路径)
4. 手动添加模块路径到Python脚本
先确认模块的安装位置:
pip show adafruit_tca9548a # 或 pip3 show adafruit_tca9548a
查看输出里的Location字段(比如/home/raspberrypi/.local/lib/python3.9/site-packages),然后在test_exception.py的开头添加:
import sys sys.path.append("/home/raspberrypi/.local/lib/python3.9/site-packages") # 替换为你查到的路径 import adafruit_tca9548a
内容的提问来源于stack exchange,提问作者MostevilJoeJoe
相关产品推荐
相关产品推荐

