Linux下用systemd启动依赖dotenv的Python脚本遇模块问题求助
解决systemd启动Python脚本找不到dotenv模块的问题
以下是几种可行的解决办法:
用虚拟环境的Python解释器
如果你的python-dotenv是装在虚拟环境里的,直接替换ExecStart里的Python路径为虚拟环境内的解释器路径。比如虚拟环境位于~/myvenv,配置改成:ExecStart=/home/你的用户名/myvenv/bin/python3 <path-to-script>指定运行用户
把服务改成以你的普通用户身份运行,这样会加载你用户目录下通过pip install --user python-dotenv安装的包。在Service段添加User字段:
[Service] User=你的用户名 ExecStart=/usr/bin/python3 <path-to-script>
手动设置PYTHONPATH
如果包安装在非系统默认的路径里,可以通过bash命令先指定PYTHONPATH再启动脚本:ExecStart=/bin/bash -c 'PYTHONPATH=/自定义的包路径 /usr/bin/python3 <path-to-script>'修正.env文件的加载路径
别忘了检查脚本里加载.env的逻辑:systemd默认的工作目录是根目录/,如果脚本用相对路径读取.env,会找不到。可以在Service段添加WorkingDirectory指定脚本所在目录:
[Service] WorkingDirectory=/脚本所在的目录路径 ExecStart=/usr/bin/python3 ./你的脚本文件名.py
内容的提问来源于stack exchange,提问作者MichaelLong102
相关产品推荐
相关产品推荐

