2016-08-11 51 views
0

我想添加一个环境变量。当我在cmd中写入set时,我希望它在那里。我如何在那里添加它?如何添加我添加的环境变量?

我想这样做是这样的:

def read_json_dump(): 
    with open("apa.json") as f: 
     a = json.load(f) 
     for key, value in a.items(): 
      project_recipient_list = value['EMAIL'] 

      os.environ["$DEFAULT_RECIPIENTS"] = project_recipient_list 

当我写print os.environ我能找到环境变量而不是当我在cmd中写set

+0

发表您的路径变量的副本,从您的机器 –

+2

更改'os.environ'都是暂时的,只影响当前进程或像'使用os.system(开始用的东西任何子进程)'和'POPEN ()'。 – martineau

回答

2

http://code.activestate.com/recipes/159462-how-to-set-environment-variables/它看起来就像你不能从python修改当前程序的环境变量并让它们持久化一样,但是通过从一个bat文件运行你的python代码也可以解决问题,这个bat文件也可以设置所需的变量。

环境变量可以用os.environ读取。可以使用os.putenv(key,value)编写它们(仅限于子shell)。但是,没有直接的方法来修改运行python脚本的全局环境。[上面的链接]中显示的间接方法将set命令写入临时批处理文件,该文件位于封闭环境中的另一个批处理文件启动python脚本。

...可以评估任意表达式并将结果分配给环境变量。为了安全起见,可以用str()替换eval()函数。

通常情况下,应避免写入环境变量,以支持通过管道或公用数据文件共享值。但是,当它无法避免时,上述技术虽然是一种有效的解决方法,但却是一种有效的解决方法。

+0

Yap,按照你所说的做了一个解决方法,并且它工作。 – gants

0

os.environ仅在python程序执行期间设置环境变量。

它不会反映到外面。

3

使用os.environ是不够的,那些包膜增值经销商不会持续下去,在Windows上,如果你想坚持的变量,你可以使用setx命令,例如:

import os 

os.system("setx $DEFAULT_RECIPIENTS [email protected]") 
相关问题