不使用`source`加载python envvars >> [

问题描述 投票:0回答:1
我正在寻找在Django应用程序中加载envvars.sh文件的解决方案。我希望在设置模块内执行此操作,并在其外部保留文件。这是我目前拥有的:

SITE_ROOT = os.path.dirname(os.path.realpath(__file__)) def source_envvars(fname='envvars.sh'): """Equivalent of `$ source {fname}` with lines in the form of `export key=value`""" envvars = os.path.join(SITE_ROOT, fname) if not os.path.exists(envvars): return with open(fname, 'r') as f: for line in f: if line.startswith('export '): line = line.strip() key = line.split('=')[0].split()[1] value = line.split('=')[1].strip('"\'') os.environ[key] = value if not os.environ.get('DB_HOST'): source_envvars() # rest of settings.py file...

使用此方法是否有缺点?我知道这不支持复杂的bash类型的导出,但是我所拥有的只是以下形式的基本导出:

export DB_HOST=rds.amazon.com/12345

上述方法是否正确地实例化了所有变量,或者它似乎丢失了某些东西或以某种方式不安全?

我正在寻找在Django应用程序中加载envvars.sh文件的解决方案。我希望在设置模块内执行此操作,并在其外部保留文件。这是我目前拥有的:...

python django environment-variables
1个回答
0
投票
您可以使用subprocess.check_output来运行shell,并使用.来运行envvars.sh,并使用env命令来输出环境变量,然后可以使用其输出来创建生成器表达式以更新[C0 ]和:
© www.soinside.com 2019 - 2024. All rights reserved.