2013-09-25 121 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集。我可以从搜索中看到,从脚本中设置环境变量并不像我想的那样简单。深入挖掘以获得正确的解决方案。 –