python - 如何在 python 的同一个 shell 中使用脚本导出环境变量?
问题描述
我的 django 项目从环境变量中获取凭据,现在我想自动化这个过程并将凭据存储在保险库(hashivcorp)中。我有一个 python 和 shell 脚本,它从 API 获取数据并将其导出为环境变量,当我使用 os.system 命令运行它时,它运行 shell 脚本,但是当它在子进程中运行时,我无法访问变量在主(父)进程/外壳中。只有在 settings.py 文件中插入 shell 脚本才能做到这一点。有什么办法可以让我在主流程中得到这些吗?Ps:我确实尝试过采购,os.system 没有将其识别为命令。
这是我正在运行的代码:
import os
os.environ['ENV'] = 'Demo'
os.system('python3 /home/rishabh/export.py')
print(os.environ.get('RDS_DB_NAME'))
输出:
None
python文件,shell脚本工作得很好。
解决方案
一种方法是export.py
在同一进程中运行,正如user1934428建议的那样:
import os
import sys
os.environ['ENV'] = 'Demo'
sys.path.append('/home/rishabh/')
import export # runs export.py in the same process
print(os.environ.get('RDS_DB_NAME'))
这假设里面没有__name__ == '__main__'
检查export.py
。
如果与当前脚本位于不同的目录中,则只需要该sys.path
行。export.py
推荐阅读
- stata - 如何对面板数据中的观察结果进行排名?
- dynamics-crm - 如何在本地 Dynamics 365 V9.0 中启用混合体验
- c# - 如何在 C# 中设置 ADODB 连接属性
- jquery - jquery 防止事件处理程序使用第二个事件处理程序运行
- java - 带有 GZIPOutputStream 的 Unirest 帖子不适用于 python Flask api
- aspectj - 不按方面处理架构服务
- r - 在整个 Markdown 针织 Word 文档中使用 texreg::wordreg
- intellij-idea - 从 lombok @Builder 注释类生成所有字段 Builder
- javascript - 如何确保 Mongoose 保持数组的顺序?
- swift - 尝试将变量传递到第二个视图时出错