systemctl .service运行Python脚本失败:requests模块找不到
解决systemctl运行Python脚本找不到requests模块的问题
问题根源
直接在终端运行脚本时,用的是当前用户的Python环境(包含你安装的requests);而通过sudo systemctl start启动时,默认使用root用户的系统全局Python环境,该环境可能未安装requests,或者你指定的Python解释器和终端实际使用的不一致。
具体解决方法
方法1:统一Python解释器路径
- 在终端执行
which python3,得到你平时运行脚本的解释器实际路径(比如/home/user/.local/bin/python3或虚拟环境内的路径)。 - 修改你的
.service文件的ExecStart行,替换为这个路径:ExecStart=/home/user/.local/bin/python3 /home/user/main.py
- 在终端执行
方法2:给root环境安装requests
如果是root用户的全局Python环境缺少requests,直接执行:sudo /usr/bin/python3 -m pip install requests方法3:让service以普通用户身份运行
在.service文件的[Service]段添加用户配置,让脚本用你的普通用户环境运行:[Service] User=user Group=user ExecStart=/usr/bin/python3 /home/user/main.py方法4:使用虚拟环境运行
若脚本依赖虚拟环境,直接调用虚拟环境内的Python解释器:ExecStart=/home/user/venv/bin/python3 /home/user/main.py确保虚拟环境已安装requests(执行
source /home/user/venv/bin/activate && pip install requests)。
内容的提问来源于stack exchange,提问作者Simone
相关产品推荐
相关产品推荐

