我正在使用以下 python 代码(Python 2.7)重置我的(Cent OS 6)系统的代理,但无法重置代理:
代码:
import os
print "Unsetting http..."
os.system("unset http_proxy")
os.system("echo $http_proxy")
print "http is reset"
输出:
Unsetting http...
http://web-proxy.xxxx.xxxxxxx.net:8080
http is reset
Process finished with exit code 0
它不应该返回http://web-proxy.xxxx.xxxxxxx.net:8080在输出中。
我从终端运行相同的取消设置命令,然后我看到代理被重置:
[trex@sumlnxvm ~]$ 取消设置 $HTTP_PROXY [trex@sumlnxvm ~]$ 回显 $HTTP_PROXY
[trex@sumlnxvm ~]$ 请建议如何使用 Python 代码重置系统代理
答案1
您无法做到这一点。环境变量从您的父 shell(您从中运行程序的 shell)开始。父 shell 创建一个新进程(用于运行 Python 代码),并将环境变量复制到该进程。您的每个 shell 都会创建os.system()
一个新进程,并将环境变量复制到该进程。然后,os.system()
创建的进程退出,其环境消失。
子进程不能改变父进程的环境。