Pythonで "http_proxy"環境変数を設定解除する方法

Pythonで

次のPythonコードを使用してLinux CentOS 6で環境変数をリセットしますhttp_proxyが、残りのPythonスクリプトでは変数を設定解除しません。

パスワード:

 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

ベストアンサー1

各呼び出しは、os.system()独自の新しい環境を持つ独自のサブシェルで実行されます。

>>> import os
>>> os.system("echo $$")
97678
0
>>> os.system("echo $$")
97679
0

あなたはい変数はunsethttp_proxyですが、サブシェルはコマンドの実行を完了し(たとえば)unset終了します。その後、実行したい新しい環境で新しいサブシェルを起動できますecho

私はあなたがしたいことがdel os.environ['http_proxy']、または以前に存在したかどうかに関係なく環境変数がos.environ.pop('http_proxy')ないことを確認したい場合は、次のように考えます。http_proxy

$ export foo=bar
$ python2
Python 2.7.10 (default, Jul 15 2017, 17:16:57)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['foo']
'bar'
>>> del os.environ['foo']
>>> os.system('echo $foo')

0

おすすめ記事