3

可能重复:
是否可以在 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~$
4

2 回答 2

3

当你运行这段代码时,你设置了环境变量,它的工作范围只在进程内。退出后(退出python的交互模式),这些环境就会消失。

正如您的代码“os.system("echo $http_proxy")”所示,如果要使用这些环境变量,则需要在进程内运行外部程序。这些变量将被转移到子进程中并可供它们使用。

于 2013-01-11T13:59:38.220 回答
0

环境变量不是“全局设置数据库”;在这里设置环境在那里没有任何影响。

例外情况是调用其他程序的程序可以为其子程序提供不同的环境。

在 shell 中,当您键入

[~/]$ FOO=bar baz

你是在告诉shellbaz用一些额外的环境调用程序FOO

您也可以在 python 中执行此操作,但更改os.environ不会有任何效果。该变量只包含一个常规的python dict,无论它是从什么环境开始的。您可以通过将替代值传递给envto来更改 python 将使用的环境subprocess.Popen

于 2013-01-11T14:01:52.400 回答