我想扩展一个大致使用此代码的应用程序:
app = Flask('app')
app.config.from_pyfile('default_config.py')
app.config.from_pyfile('local_config.py', silent=True)
在那里,可以使用app.config['value']
访问设置。
在我的扩展中,我只想使用配置文件,没有Flask应用程序,也没有创建Flask对象。
我唯一的想法是:
import default_config as dc
import config as cc
vars_dc = [var for var in dir(dc) if not var.startswith('__')]
settings = {var: getattr(dc, var) for var in vars_dc}
vars_cc = [var for var in dir(cc) if not var.startswith('__')]
settings.update({var: getattr(cc, var) for var in vars_cc})
这似乎不是一个好的解决方案,因为有很多陷阱要考虑(配置文件中的错误等,所以我必须重新实现所有异常处理和东西)
是否有任何模块具有此类功能?
*编辑*
#default_config.py
HOST = 'myhostname'
PORT = 7453
DEBUG = False
MY_URLS = []
答案 0 :(得分:1)
什么阻止你这样做the same way Flask does it?
答案 1 :(得分:1)
我不确定我是否理解正确但如果您正在谈论在扩展程序代码中使用配置,只要您将__init__
定义为:
class MyExtension(object):
def __init__(self, app=None):
self.app = app
if app is not None:
self.init_app(app)
def init_app(self, app):
# now you can use app.config
app.config.get('HOST')
答案 2 :(得分:1)
迟到的答案,但我相信这应该有效:
from importlib import import_module
app.config = import_module("default_config").__dict__