我试图系统化一个烧瓶应用程序。我尝试写一个这样的脚本:
#!/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
.也许这不是最佳选择,但是......就我而言,这是可行的。
为什么这不起作用?
好吧,我想知道User
和Group
中的定义[Service]
。如果您没有这个,那么您正在使用root
用户...有时这是必需的(其他环境变量)。