systemd启动激活虚拟环境的脚本不生效

systemd启动激活虚拟环境的脚本不生效

我试图系统化一个烧瓶应用程序。我尝试写一个这样的脚本:

#!/bin/bash
cd /path/to/app
source venv/bin/activate
python start.py

只需在 .service 文件中执行此脚本即可。但这并不完全有效,因为启动服务错误时

python:找不到命令

我实际上遇到了很多问题,但最终通过服务文件解决了:

[Service]
WorkingDirectory=/path/to/app
ExecStart=/path/to/app/venv/bin/python start.py

如果没有WorkingDirectory,文件路径似乎不起作用,因为甚至找不到静态文件。

所以我的问题实际上是为什么上面的脚本一开始不起作用?生效cd了,但是venv激活没有?

答案1

嗯,我最近也遇到了这个问题,为了快速解决,我输入了这段代码

#!/bin/bash

source venv/bin/activated
python start.py

bash shell 脚本xyz.sh- 我在ExecStart.也许这不是最佳选择,但是......就我而言,这是可行的。

为什么这不起作用?

好吧,我想知道UserGroup中的定义[Service]。如果您没有这个,那么您正在使用root用户...有时这是必需的(其他环境变量)。

相关内容