2013-09-25 167 views
0
currentPath = os.environ['PATH'] 
myPath = "/auto/sw/packages/bin" 
match = re.search(myPath, currentPath) 
if match is not None: 
    print 'PATH '+ match.group(0)+ 'FOUND' 
else: 
    os.environ['PATH'] = os.environ['PATH'] + myPath 
    print 'SET PATH: ' + os.environ['PATH'] 

在我上面的代碼中,SET PATH輸出打印正確,但是當我使用'echo $ PATH'檢查時,它不改變實際的PATH變量。我在這裏做錯了什麼?快速的幫助將不勝感激。使用Python設置環境變量

+0

的[如何設置Python環境變量(http://stackoverflow.com/questions/5971312/how-to-set-environment-variables-in-python) – BartoszKP

+0

你是不是想可能重複在您的Python腳本退出後,在shell中「echo $ PATH」?如果是這樣,就不可能通過這種方式改變環境變量。您可以在當前作用域和子進程中更改環境變量,但不能更改外部作用域/調用進程的環境。環境變化只會傳播下來,並且您的Python代碼正在從調用進程/外殼派生的子進程中運行。 –

+0

是的。但我的意圖是從腳本中改變PATH。應該有辦法做到這一點。如果我在這方面取得成功,我會在這裏發帖。 –

回答

0

1,我覺得應該改變下面的代碼。

os.environ['PATH'] = os.environ['PATH'] + myPath 

os.environ['PATH'] = os.environ['PATH'] + ":" + myPath 

2,您可能會推出 「回聲$ PATH」 後python腳本退出。嘗試按照以下方式在python腳本中打印它。

os.system("echo $PATH") 
+0

非常感謝。我試了這兩個。但是一旦我脫離腳本,它仍然沒有顯示新的PATH集。我可以從搜索中看到,從腳本中設置環境變量並不像我想的那樣簡單。深入挖掘以獲得正確的解決方案。 –