基于ongolang的spf13/viper的简单python3配置库
gila的Python项目详细描述
吉拉
Gila是一个python3分层配置库,主要基于Go的viper配置库。它的设计是为了方便使用python3使12 factor应用程序尽可能简单。在
动机
在Go中使用了Viper配置库之后,我非常习惯它提供的易用性和灵活性。在寻找了一个在python项目中使用的库之后,我找不到一个结合了Viper支持的所有非常有用的特性的库。在
特点
- 允许为每个配置键设置默认值
- 在多个路径上自动查找配置文件
- 自动加载具有特定前缀的环境变量
- 支持最流行的配置语言:
yaml, toml, json, properties files, hcl, dotenv
- 单例模式可在大多数应用程序中易于使用
- 非歧义结果的分层加载。在
安装
需要python 3.6+
pip install gila
简单的例子
更多示例可以在examples目录中找到
importgilafromosimportenviron# Setting default values for keysgila.set_default('host','localhost:8080')gila.set_default('allow_insecure',False)# This will tell Gila to automatically load in ENV vars that start with GILAgila.set_env_prefix('GILA')gila.automatic_env()# This would normally be done outside of program# eg. in docker compose or k8s manifestenviron['GILA_HOST']='localhost:9999'# This is the preferred method of grabbing# the configurations. Other methods exist (all_config, debug)# but this method is the most performant for single# value calls.host=gila.get('host')allow_insecure=gila.get('allow_insecure')"""Output:Host: localhost:9999Insecure allowed: false"""print(f'Host: {host}')print(f'Insecure allowed: {allow_insecure}')
支持的配置文件类型
- yaml(
.yaml, .yml
) - json(
.json
) - toml(
.toml
) - 盐酸(
.hcl
) - 环境变量
- 值将转换为字符串
- 键被转换为小写:ENV\u VAR->;
gila.get('env_var')
- 属性文件(
.properties, .prop, .props
)- 值将转换为字符串
- dotenv(
.env
)- 值将转换为字符串
- 不支持嵌套值
其他帮助
请查看我们在ReadTheDocs上的文档,或者如果您喜欢最小的工作示例,请查看目录<;/examples/>;,该目录包含了从简单配置到更复杂配置的大量用例。在
学分
史蒂夫·弗朗西娅spf13创建毒蛇库
pyyaml、pyhcl和{a7}包的作者,如果没有这些包,Gila将很难创建和维护
与毒蛇的主要区别
- 区分大小写-Gila中的所有键都区分大小写,这允许适当的json、yaml和toml支持。除非手动绑定,否则ENV键不区分大小写。在
- 不支持远程配置-虽然我认为支持conver和etcd是一个非常好的特性,但我认为此时此刻它是一个属于单独库的特性。在
- 不支持命令标志-Viper非常依赖命令标志的Cobra伙伴关系。您应该选择自己风格的CLI解析器(docopts、argparse等)并将其与这个库配对(查看我们的示例)。在
- 观察配置文件中的变化-我非常想添加这个特性,但是我觉得在
v1.0.0
上没有必要添加这个特性。如果您想要这个特性,您可以竖起拇指the issue,或者打开一个带有实现的PR。在
- 项目
标签: