无法设置系统变量

时间:2019-05-10 15:05:50

标签: python shell environment-variables

我正在尝试通过在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"

1 个答案:

答案 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进程的子进程,因此可以访问其环境。