2010-06-16 78 views
2

设置我想一个小python脚本设置HUDSON_HOME环境变量。os.environ()发出错误而哈德森

使用命令行,我可以很容易地做到这一点使用>>设置HUDSON_HOME = http://localhost:8080

但我怎么能过蟒蛇做同样的直接?我不希望通过将命令行使用os.system()来做到这一点..可以os.environ()帮上什么忙?

我在我的脚本: 进口OS os.environ(“HUDSON_HOME”)=“http://localhost:8080

但它可能将其设置为子进程则,而不是解决这个问题的家长shell..any方式? ?

+0

一个子进程不能修改父环境。 – 2010-06-16 11:01:19

+0

yup !!得到你的观点:-) – 2010-06-16 11:07:22

回答

3

os.environ是环境的字典represenation。你会这样使用它:

>>> import os 
>>> os.environ['HUDSON_HOME'] = 'http://localhost:8080' 

但是,它不能修改父进程AFAIK的环境。

0

我不知道有什么办法可以做到这一点,因为你已经请求,因为修改你的Python程序中的环境只会改变它的环境,以及任何子进程,而不是父进程。这就是说,如果你所需要做的只是让一些Python程序知道变量的值是什么,取决于你的shell,你应该能够简单地将它的输出分配给环境变量:

#!/usr/bin/env python 

# code goes here 

print 'http://localhost:8080' 

如果上面是你的计划,你可以在shell中运行这一点,并有HUDSON_HOME设置为http://localhost:8080

$ set HUDSON_HOME=`python program.py` 

注:这些都是反引号,这是怎么知道拿输出运行命令而不是命令本身。