[英]python initiated with systemd cannot start subprocess
我在使用systemd启动的virtualenv中有一个python脚本。
[Unit]
Description=app
After=network.target
[Service]
Type=simple
User=user
Group=user
Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=$VIRTUAL_ENV/bin:$PATH
WorkingDirectory=/home/user/Projects/app
ExecStart=/home/user/Projects/app/venv/bin/python app.py
[Install]
WantedBy=multi-user.target
关键是该脚本使用subprocess.Popen(['python', 'whatever.py'])
来打开另一个python脚本。 我遇到一个未找到的错误,并发现应该使用绝对路径调用python,因此我对其进行了更改,并且效果很好。
但是,现在我使用第三方库pygatt
,该库在内部使用子gatttool
打开$PATH
(系统范围的二进制文件,通常在/ usr / bin中)中的gatttool
或hcitool
。
所以现在我不能更改该库(可以通过分叉来实现,但我希望不必这样做)。
为什么systemd如果不使用绝对路径就无法生成python子进程? 没有systemd(从控制台运行),一切正常。
我不确定,但是以下配置很可能不会在一个配置行中设置环境。
Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=$VIRTUAL_ENV/bin:$PATH
在这里,您期望将VIRTUAL_ENV
设置为$VIRTUAL_ENV
在下一行进行评估,但这可能无法正常工作。 我会尝试硬编码第二行:
Environment=VIRTUAL_ENV=/home/user/Projects/app/venv
Environment=PATH=/home/user/Projects/app/venv/bin:$PATH
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.