如何在config.ini文件中加载环境变量?

时间:2018-11-16 00:17:22

标签: python configuration ini

我有一个config.ini文件,其中包含一些属性,但是我想读取配置文件中的环境变量。

[section1]
 prop1:(from envrinment variable) or value1

这是否可行,或者我必须编写一种方法来解决这个问题?

2 个答案:

答案 0 :(得分:1)

我知道聚会晚了,但是有人会觉得很方便。 您要问的是值插值 os.environ

金字塔?

这样做的逻辑是不寻常的,并且通常在以下情况下发生:如果一台具有金字塔服务器(由开箱即用的配置文件读取),而又想模仿一台django服务器(始终设置为读取操作系统) .environ)。
如果使用金字塔,则pyramid.paster.get_app具有参数选项:如果将os.environ用作字典,则可以在ini中使用%(variable)s。并非如下一节所示,这不是特定于pyramid.paster.get_app的(但是我猜是get_app是这种情况。)

app.py

from pyramid.paster import get_app
from waitress import serve
import os

app = get_app('production.ini', 'main', options=os.environ)
serve(app, host='0.0.0.0', port=8000, threads=50)

production.ini:

[app:main]
sqlalchemy.url = %(SQL_URL)s
...

Configparse?

上面使用的是configparser basic interpolation

说我有一个名为config.ini的文件,其所在行

[System]
conda_location = %(CONDA_PYTHON_EXE)

以下将起作用...

import configparser, os
cfg = configparser.ConfigParser()
cfg.read('config.ini')
print(cfg.get('System', 'conda_location', vars=os.environ))

答案 1 :(得分:-1)

我认为:thinking_face,使用 .env 并在 config.py from dotenv import load_dotenv() 和下一行 load_dotenv() 中,它将从 .env 文件加载 envs