我正在尝试通过在python脚本内运行shell脚本来设置一些环境变量。但是,当我打印os.environ时,没有得到新添加的变量,并且打印os.environ [“ CFG_FILE”]返回 KeyError:'CFG_FILE'
python代码
import os
os.system("sh cmd.sh")
print(os.environ)
print(os.environ["CFG_FILE"])
外壳代码
export CFG_FILE="proc_build_jenkins_engine_test.cfg"
答案 0 :(得分:0)
我必须从Python运行一些shell脚本和命令,这些脚本需要一些环境变量来由Python设置或定义,而不是手动进行。
这就是os.putenv
的作用。
示例(外壳):
$ echo -e '#!/bin/bash\necho "$MYVAR"' > testenv.sh && chmod +x testenv.sh
现在使用Python:
>>> import os, subprocess as sp
>>> os.putenv("MYVAR", "something")
>>> sp.run(['./testenv.sh'])
something
CompletedProcess(args=['./testenv.sh'], returncode=0)
由于用subprocess.run()
执行的操作是Python进程的子进程,因此可以访问其环境。