Как загрузить переменные окружения в файл config.ini? - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть файл config.ini, который содержит некоторые свойства, но я хочу прочитать переменные среды внутри файла конфигурации.

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

Возможно ли это, или я должен написать метод, чтобы позаботиться об этом?

1 Ответ

0 голосов
/ 13 июня 2019

Я знаю, что уже поздно на вечеринку, но кому-то это может пригодиться.После чего вы спрашиваете значение интерполяции в сочетании с os.environ .

Пирамида?

Логика этого необычна и, как правило, таковаслучается, если у вас есть сервер пирамиды (который читается из файла конфигурации из коробки) при желании имитировать сервер django (который всегда настроен на чтение os.environ).
Если вы используете пирамиду,затем pyramid.paster.get_app имеет параметры аргумента: если вы передаете os.environ в качестве словаря, вы можете использовать %(variable)s в ini.Не то чтобы это не было специфично для 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 .

Скажите, у меня есть файл с именем 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))
...