可能重复: Is it possible to change the Environment of a parent process in python?
我正在使用python 2.4.3。我试图设置我的http_proxy变量。请看下面的例子,请告诉我出了什么问题。变量是根据python设置的,但是当我脱离交互模式时。http_proxy变量仍未设置。我在脚本中尝试过,也用其他变量尝试过,但是我得到了相同的结果。在操作系统中实际上没有设置任何变量。
Python 2.4.3 (#1, May 1 2012, 13:52:57)
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['http_proxy']="abcd"
>>> os.system("echo $http_proxy")
abcd
0
>>> print os.environ['http_proxy']
abcd
>>>
user@host~$ echo $http_proxy
user@host~$发布于 2013-01-11 13:59:38
运行此代码时,设置环境变量,其工作范围仅在进程中。退出后(退出python的交互模式),这些环境将消失。
正如您的代码“os.system(”回显$http_proxy")“指示的那样,如果要使用这些环境变量,则需要在进程中运行外部程序。这些变量将被转移到子进程中,并可由它们使用。
发布于 2013-01-11 14:01:52
环境变量不是“全局设置数据库”;在这里设置环境没有任何影响。
这方面的例外是,调用其他程序的程序可以为它们的子程序提供不同的环境。
在shell,当您键入
[~/]$ FOO=bar baz您正在告诉shell使用一些额外的环境baz调用程序FOO。
您也可以在python中这样做,但是更改os.environ不会产生任何影响。该变量只包含一个常规python,它使用的是任何启动环境。您可以通过将env的备用值传递给subprocess.Popen来更改python将使用的环境。
https://stackoverflow.com/questions/14279560
复制相似问题