2016-08-11 88 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]") 
相關問題