如何在金字塔 ini 文件中使用系统环境变量?



我导出了一个名为DBURL='postgresql://string'的变量,我想在我的配置 ini 文件中使用它,例如::

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

这是行不通的。

把它放在你的__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())

然后,当您将环境变量导出到 shell 时,正确的语法是这样的:

sqlalchemy.url = ${DBURL}

.ini中设置该环境变量后,您可以使用配置解析器语法:

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

从 https://stackoverflow.com/a/16446566/2214933 那里偷来的想法

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 格式,并将其作为部署过程的一部分运行。

最新更新