簡體   English   中英

我如何在Pyramid上的.ini文件中使用環境變量?

[英]How i can use environment variables on .ini file in Pyramid?

例如,現在我有這個.ini文件:

[DEFAULT]
db_user = user_test
db_password = psw_test
db_host = localhost
db_name = db_test

...

我想要做:

export ENV_DB_USER=user_test
export ENV_DB_PSW=psw_test
export ENV_DB_HOST=localhost
export ENV_DB_NAME=db_test

然后我想在.ini文件中做這樣的事情:

[DEFAULT]
db_user = ${ENV_DB_USER}
db_password = ${ENV_DB_PSW}
db_host = ${ENV_DB_HOST}
db_name = ${ENV_DB_NAME}

...

我嘗試使用%()的語法,但遺憾的是無法正常工作。 我做錯了什么?

謝謝 :)

不幸的是,它們現在不受支持 - 您必須在運行時而不是在ini文件本身中加載它們。 我的應用程序中的一個常見方法是定義一個render-config腳本,該腳本采用site.ini.in模板並使用jinja2將其呈現給site.ini使用env vars。 它不是很令人滿意,但它確實運作良好。

import jinja2
import os

def multiline(val):
    lines = (l.strip() for l in val.strip().split('\n'))
    return '\n    ' + '\n    '.join(lines)

def main(cli, args):
    env = jinja2.Environment(
        loader=jinja2.FileSystemLoader(os.getcwd()),
        undefined=jinja2.StrictUndefined,
    )
    env.filters['multiline'] = multiline

    template = env.get_template(args.template)
    result = template.render({
        'env': os.environ,
    })

    with open(args.config_file, 'w', encoding='utf8') as fp:
        fp.write(result)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM