[英]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.