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

How can I use a system environment variable inside a pyramid ini file?

我导出了一个名为 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 中设置了环境变量,就可以使用 configparser 语法:

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

灵感来自

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