python - 环境变量在设置 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
为什么这两个环境变量被删除而不被保存?我想知道,一旦我设置了一些环境变量,我可以稍后再次使用它而无需再次设置它(直到我删除它们),对吧?怎么了?谢谢!
解决方案
您只是为该特定运行的 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))))
推荐阅读
- node.js - 身份验证:在 JWT 中编码自定义声明
- algorithm - 压缩具有特定顺序的正整数 (int32) 向量
- javascript - 不推荐使用错误过滤器如何解决 vue.js 3 中的此错误
- asp.net - FileStream 对象永远将文件推送到浏览器
- python - 如何制作面向侧面的弧 - python
- sql - SQL Server:更改列的数据类型时删除空约束,Oracle 不会
- python - Discord.py 碰撞提醒命令
- python - 删除 QListView 中的图标
- spring-boot - 在依赖项中添加 spring-cloud-starter-kubernetes-config 后 Springboot 应用程序未启动
- tuples - 调用 find_if 在元组向量的向量中搜索元素时出错