跳转到主要内容

适用于应用的简单分层配置管理器

项目描述

modconfig – 适用于应用的简单分层配置管理器

Tests Status PYPI Version

动机

应用程序(尤其是网络服务)通常需要某些配置选项取决于应用程序运行的环境(开发、测试、生产等)。例如,数据库地址配置选项在开发期间可能默认为本地数据库服务器,在测试期间为模拟数据库服务器,在生产期间为另一个数据库服务器。它也可能需要通过环境变量进行自定义。《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的问题跟踪器报告。

贡献

项目的开发地点:https://github.com/klen/modconfig

许可证

许可协议为MIT许可

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

modconfig-1.2.1.tar.gz (5.4 kB 查看哈希值)

上传时间

构建分布

modconfig-1.2.1-py3-none-any.whl (5.6 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面