适用于应用的简单分层配置管理器
项目描述
modconfig – 适用于应用的简单分层配置管理器
动机
应用程序(尤其是网络服务)通常需要某些配置选项取决于应用程序运行的环境(开发、测试、生产等)。例如,数据库地址配置选项在开发期间可能默认为本地数据库服务器,在测试期间为模拟数据库服务器,在生产期间为另一个数据库服务器。它也可能需要通过环境变量进行自定义。《modconfig》针对此类场景,并允许为各种环境指定默认配置选项,并可由自定义环境变量覆盖。
《modconfig》使用Python模块来保持配置选项。您不受格式(json、yaml、ini)限制,可以使用任何Python语句/模块来调整您的配置,就像专业人士一样。它保持了灵活性,使您的配置非常声明性,没有任何魔法。
需求
python >= 3.6
安装
modconfig 应使用pip安装
pip install modconfig
使用
例如,您在应用程序中的结构如下
|- myapp/
| |- __init__.py
| |- config/
| | |- __init__.py
| | |- defaults.py
| | |- production.py
| | |- stage.py
| | |- tests.py
| | ...
请参阅 https://github.com/klen/modconfig/tree/develop/example 作为简单参考。
在您的应用程序中初始化配置并在任何地方使用它
from modconfig import Config
cfg = Config(
# instead an import path it could be the module itself
'myapp.config.production',
# Override any options
ANY_OPTION1="VALUE", ANY_OPTION2="VALUE")
assert cfg.DATABASE
assert cfg.ANY_OPTION1
后备
如果您提供几个模块,modconfig 将使用第一个可用的模块
from modconfig import Config
cfg = Config('myapp.config.local', 'myapp.config.production', ANY_OPTION1="VALUE")
assert cfg.DATABASE
assert cfg.ANY_OPTION1
环境
模块路径可以设置为环境变量
import os
from modconfig import Config
# Let's define an env var
os.environ['MODCONFIG'] = 'myapp.config.production'
cfg = Config('env:MODCONFIG', 'myapp.config.local')
assert cfg.DATABASE
自定义环境变量
任何选项都可以通过环境变量重新定义。默认情况下,modconfig会尝试将值解析为JSON,这允许我们设置复杂值(字典、列表等)。如果值不是JSON,则将其解析为字符串。
如果环境变量的名称不在源模块中,则会忽略这些变量。
有关更多示例,请参阅https://github.com/klen/modconfig/tree/develop/tests.py。
错误跟踪器
如果您有任何建议、错误报告或不满,请向https://github.com/klen/modconfig/issues的问题跟踪器报告。
贡献
许可证
许可协议为MIT许可。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。