首页 > 解决方案 > 环境变量在设置 Python 后立即被删除

问题描述

我在 Python 中有这个简单的环境设置脚本:

import os
os.environ['API_USER'] = 'SuperUser'
os.environ['API_PASSWORD'] = 'SuperPass'

USER = os.environ.get('API_USER')
PASSWORD = os.environ.get('API_PASSWORD')

print(USER)
print(PASSWORD)

当我运行它时,我得到了这个:

SuperUser
SuperPass

到目前为止还可以,但是当我注释掉我设置用户的两行并通过并再次运行它时,我得到了这个:

None
None

为什么这两个环境变量被删除而不被保存?我想知道,一旦我设置了一些环境变量,我可以稍后再次使用它而无需再次设置它(直到我删除它们),对吧?怎么了?谢谢!

标签: pythonenvironment-variables

解决方案


您只是为该特定运行的 Python 进程设置环境变量。一旦进程退出,变量就不再存在。看来您无法从 Python 设置持久环境变量,如下所述:

为什么python中设置的环境变量不能持久化?

看起来您需要 shell 执行您想要保留的任何变量,如上述问题的第二个答案中所述,如下所示:

import pipes
import random
r = random.randint(1,100)
print("export BLAHBLAH=%s" % (pipes.quote(str(r))))

编辑:

根据@SuperStormer 下面的评论——他们是正确的——这个解决方案是 Unix/Mac 特定的。如果你需要在 Windows 上完成同样的事情,你会setx像这样使用(这将只为当前用户设置变量,你需要/m在末尾添加一个开关来为本地机器设置):

import pipes
import random
r = random.randint(1,100)
print("setx BLAHBLAH %s" % (pipes.quote(str(r))))

推荐阅读