2010-06-16 80 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` 

注:這些都是反引號,這是怎麼知道拿輸出運行命令而不是命令本身。