环境变量在设置后立即被删除 Python

时间:2021-02-26 17:47:22

标签: python environment-variables

我在 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

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

1 个答案:

答案 0 :(得分:1)

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

Why can't environmental variables set in python persist?

看起来您需要 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))))