我们可以将python脚本修改的环境变量传递给外壳吗?

时间:2011-11-12 00:00:27

标签: python shell

对于以下python脚本:

import os
os.system('PYTHONPATH=\user\...')
os.system('export PYTHONPATH')
....

无论如何我们可以"出口"执行此脚本后,PYTHONPATH变量到shell?

2 个答案:

答案 0 :(得分:4)

不,这是不可能的。启动Python进程时,它会从父shell复制它自己的环境副本。 Python进程只能修改私有副本,并且更改不会传播回父进程。

如果你想做这样的事情,最好的办法是打印执行所需环境变量变化所需的shell命令,例如。

print "export PYTHONPATH=$PYTHONPATH:..."

并使用

运行脚本
eval "$(python myscript.py)"

答案 1 :(得分:0)

斯文的答案很好。

根据您的要求,另一种可能的方法是从Python脚本调用新的shell进程。由于新shell是Python进程的子进程,因此它将继承任何环境变量。

显然,这并不总是你想要做的,但它是另一种选择。