小巧、有观点且易于使用的配置库。
项目描述
NanoConf
NanoConf 是一个小巧、有观点且易于使用的 Python 配置库。它旨在用于小型到中型项目,在这些项目中,完整的配置库可能过于冗余。
安装
pip install nanoconf
使用方法
from nanoconf import NanoConf
# or if NanoConf if too long of a name
from nanoconf import NC
# Create a new configuration object
config = NanoConf("/path/to/config.nconf")
# Use the configuration object
print(config["key"])
# Since all values are also loaded as attributes, you can also do
print(config.key)
配置文件格式
NanoConf 使用简单的配置文件格式,易于阅读和编写。每个文件都是 YAML 格式,并包含一个顶级字典。尽管顶层必须是字典,但您可以嵌套字典和列表,深度不限。每个配置文件也必须具有 .nconf 扩展名。这确保了 NanoConf 只加载那些旨在成为配置文件的文件。
key: value
test: 1
overriden: false
things:
- thing1
- thing2
- thing3
top:
v1: 1
middle:
v2: 2
inner:
v3: 3
deep:
v4: 4
如果您要加载多个配置文件到单个配置对象中,可以将它们全部放在同一个目录下,并将该目录传递给 NanoConf。NanoConf 将自动将子文件放置在它们的文件名作为父文件的属性下。该文件的 内容将可以通过对应的文件名属性访问。
<project root>
conf_dir
|__ cfg1.nconf
|__ cfg2.nconf
|__ cfg3.nconf
# load an entire directory
proj_config = NanoConf("/path/to/conf_dir")
print(proj_config.cfg1.test)
您还可以在任意配置文件中使用 _import
关键字导入额外的文件或目录。
# main.nconf
_import:
- /path/to/project/more_config
key: value
test: 1
<project root>
main.nconf
more_config
|__ subcfg1.nconf
|__ subcfg2.nconf
|__ subcfg3.nconf
# loading the main config file will also load the sub-configs
proj_config = NanoConf("/path/to/project/main.nconf")
print(proj_config.more_config.subcfg1.test)
注意目录结构也被保留在属性路径中。这使得更容易找到值来源的文件。
环境变量
NanoConf 支持环境变量,既可以作为现有值的覆盖,也可以作为加载配置的补充。环境变量按文件逐个评估,因此可以为不同的配置文件设置不同的环境变量。我们通过在配置文件中设置特殊的 _envar_prefix
键来管理这一点。注意: NanoConf 不会修改任何环境变量名称或值的字母大小写。确保大小写正确是您的责任。
_envar_prefix: myapp
key: value
overrideme: original
export myapp_overrideme=changed
config = NanoConf("/path/to/config.nconf")
print(config.overrideme)
您还可以将复杂数据结构作为 JSON 字符串传递给环境变量。
export myapp_abc='{"a": 1, "b": 2, "c": 3}'
config = NanoConf("/path/to/config.nconf")
print(config.abc.b)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
nanoconf-1.0.0.tar.gz (6.9 kB 查看哈希值)
构建分发
nanoconf-1.0.0-py3-none-any.whl (3.9 kB 查看哈希值)
关闭
nanoconf-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b196caa30674ed94470137d1918e0c35fdce7b9ca9a98ba362c32e6191c7e7e2 |
|
MD5 | 4eb0bc2eb2c016737bb474ea5b43dfeb |
|
BLAKE2b-256 | 2107af04f1aa914266a472cde6a8f4b9a6d9fe70622f6bc0da86c1b323ad92ce |
关闭
nanoconf-1.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f4846b1aa0bab538418d552e2cfd6b8210d1e73368c044f2d4aef921f112ef01 |
|
MD5 | c039c84868de01c681231e91d3e13058 |
|
BLAKE2b-256 | eba31f8d53a1d016b479ef0f6a185ad745c4f1beb44b56afcca56e46468b7743 |