从文档:
注意: 直接调用putenv()不会更改os.environ,因此最好修改os.environ。
因为
unsetenv有类似的警告:
但是,对unsetenv()的调用不会更新os.environ,因此实际上最好删除os.environ的项。
getenv刚刚返回从价值
os.environ,因为它的实施显示,所以通过使用它,你进入它似乎当你从蟒蛇看看它的值未设置,而它实际上可以是在真实环境中的状态。现在我能想到的唯一方法是使用ctypes调用c
getenv函数。
如果我修改您的代码以使用而
os.environ不是调用
putenv/
unsetenv一切都按预期工作:
import osdef print_all(): print "os.environ['myname']=%s" % (os.environ['myname'] if 'myname' in os.environ else "None") os.system('env | grep myname') printdef delete_myname(): if 'myname' in os.environ: os.environ.pop('myname')print_all()os.environ['myname'] = 'csj2'print "---------------------"print_all()delete_myname()print_all()os.environ['myname'] = 'csj3'print "---------------------"print_all()delete_myname()print_all()输出:
$ myname=somevalue python2 test.py os.environ['myname']=somevaluemyname=somevalue---------------------os.environ['myname']=csj2myname=csj2os.environ['myname']=None---------------------os.environ['myname']=csj3myname=csj3os.environ['myname']=None



