前言
今天在自己的python项目中,使用subprocess去执行一个python脚本,然后发现这个脚本中无法使用os.envirn
来获取环境变量。
问题背景
程序使用
supervisor
的方式启动
-
启动程序片段
code,output = subprocess.getstatusoutput("python3 test.py")
-
执行脚本片段
import os home = os.environ['HOME']
-
抛出异常
home = os.environ["HOME"] File "/usr/lib/python3.5/os.py", line 725, in __getitem__ raise KeyError(key) from None KeyError: 'HOME'
自测过程
-
使用python交互环境
结果正常。
-
直接启动程序而不是托管到supervisor
结果正常。
问题所在
需要自己在supervisor上传入环境变量。
比如:
environment=HOME="/home/xxx",USER="xxx"
解决方案
- supervisor配置文件中传入环境变量
- 不使用os.environ接口,使用其他接口。