Как я могу использовать системную переменную среды внутри INI-файла пирамиды? - PullRequest
0 голосов
/ 08 мая 2018

Я экспортировал переменную с именем DBURL='postgresql://string' и хочу использовать ее в своем конфигурационном INI-файле, например: ::

[app:kotti]
sqlalchemy.url = %(DBURL)s

Это не работает.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

PasteDeploy (здесь используется пирамида формата ini) не поддерживает чтение непосредственно из переменных окружения. Пара общих опций:

1) Установите эту опцию самостоятельно в вашем main.

import os

def main(global_config, **settings):
    settings['sqlalchemy.url'] = os.environ['DBURL']
    config = Configurator(settings=settings)
    ...

2) Определите свой ini-файл как шаблон jinja2 и получите команду для его вывода в формат ini, и просто запустите его как часть процесса развертывания.

0 голосов
/ 09 мая 2018

Поместите это в ваш __init__.py:

def expandvars_dict(settings):
    """Expands all environment variables in a settings dictionary."""
    return dict((key, os.path.expandvars(value)) for
                key, value in settings.items())

Затем, когда вы экспортируете переменную окружения в вашу оболочку, правильный синтаксис выглядит так:

sqlalchemy.url = ${DBURL}

Если у вас установлена ​​переменная окружения в вашем .ini, вы можете использовать синтаксис configparser :

sqlalchemy.connection = %(sqlalchemy.url)s%(user:pass and other stuff)s

Идея, украденная у https://stackoverflow.com/a/16446566/2214933

...