首页 > 解决方案 > 如何在 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脚本工作得很好。

标签: pythonshellscriptingoperating-system

解决方案


一种方法是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


推荐阅读