os.environ ['http_proxy']无效

时间:2013-01-11 13:52:19

标签: python

  

可能重复:
  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~$

2 个答案:

答案 0 :(得分:3)

运行此代码时,设置环境变量,其工作范围仅在进程内。退出后(退出python的交互模式),这些环境将消失。

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

答案 1 :(得分:0)

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

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

在shell中,当您键入

[~/]$ FOO=bar baz

您告诉 shell 使用一些额外的环境baz来调用程序FOO

您也可以在python中执行此操作,但更改os.environ不会产生任何影响。该变量只包含一个常规的python dict,它包含启动的任何环境。您可以通过将env的备用值传递给subprocess.Popen

来更改python将使用的环境