sudo调用Python脚本报ModuleNotFoundError: No module named 'schedule'求助
解决sudo调用Python脚本时找不到schedule库的问题
核心原因
sudo 会切换到root用户的执行环境,你之前通过pip/pip3安装的schedule库属于当前普通用户的Python环境,root用户的Python路径中没有这个包,因此触发找不到模块的错误。
可行解决方案
1. 以root权限安装schedule库
直接给root用户的Python环境安装该库,确保root能找到:
sudo pip3 install schedule
如果系统存在多版本Python,建议指定解释器路径避免混淆:
sudo /usr/bin/python3 -m pip install schedule
2. 调用时指定当前用户的Python解释器路径
先查询当前用户的python3路径:
which python3
假设输出为/home/your_user/.local/bin/python3,修改调用命令:
call("sudo /home/your_user/.local/bin/python3 ProgramWithSchedule.py", shell=True)
让sudo使用你原本的Python环境而非root默认环境。
3. 移除sudo(若脚本无需管理员权限)
如果脚本执行不需要root权限,直接去掉sudo即可:
call("python3 ProgramWithSchedule.py", shell=True)
4. 使用虚拟环境隔离依赖
创建虚拟环境并安装schedule,调用时指定虚拟环境的Python路径:
# 创建虚拟环境 python3 -m venv myenv # 激活环境并安装包 source myenv/bin/activate pip install schedule
记住虚拟环境的Python路径(如myenv/bin/python3),修改调用命令:
call("sudo /path/to/myenv/bin/python3 ProgramWithSchedule.py", shell=True)
内容的提问来源于stack exchange,提问作者Matjaž Meža
相关产品推荐
相关产品推荐

