getconf,python项目的通用配置库

getconf的Python项目详细描述


https://secure.travis-ci.org/Polyconseil/getconf.png?branch=masterLatest VersionSupported Python versionsWheel statusLicense

getconf项目为python程序提供简单的配置帮助程序。

它提供了一个简单的api来读取各种配置文件和环境变量:

importgetconfconfig=getconf.ConfigGetter('myproj',['/etc/myproj.conf'])db_host=config.getstr('db.host','localhost')db_port=config.getint('db.port',5432)

除了这个api,getconf的目标是统一开发和生产系统的配置设置, 遵守每个系统中的标准程序:

  • 允许在开发系统上配置用户空间
  • 允许对连续集成系统进行多种不同配置
  • 在传统生产服务器上使用/etc中的标准配置空间
  • 为基于云的平台处理基于环境的配置

getconfv1.6以后的版本支持2.7、3.3、3.4、3.5、3.6,并根据两条bsd许可证进行分发。 v1.8.x将是支持2.7和3.3的最新版本。 支持Python2.6的最新版本getconf是v1.5.1。

安装

PyPI装入包,使用pip:

pip install getconf

或来自github:

git clone git://github.com/Polyconseil/getconf

getconf除了python之外没有外部依赖性。

简介

注意

请参阅reference高级用法

所有配置值都通过getconf.ConfigGetter对象访问:

importgetconfconfig=getconf.ConfigGetter('myproj',['/etc/myproj/settings.ini','./local_settings.ini'])

上面一行声明:

  • 使用myproj名称空间(稍后解释;这主要用于基于环境的配置,作为环境变量的前缀)
  • 依次看/etc/myproj/settings.ini(用于生产)和./local_settings.ini(用于开发);后者重写前者。

一旦配置了getconf.ConfigGetter,就可以使用它来检索设置:

debug=config.getbool('debug',False)db_host=config.getstr('db.host','localhost')db_port=config.getint('db.port',5432)allowed_hosts=config.getlist('django.allowed_hosts',['*'])

所有设置都有类型(默认为文本),并接受默认值。 为了便于阅读,他们使用名称空间(想想“sections”)。

使用上述设置,getconf将尝试通过检查提供db.host。 以下选项按顺序排列(在第一个定义值处停止):

  • 从环境变量MYPROJ_DB_HOST,如果定义了
  • ./local_settings.ini[db]部分中的host
  • /etc/myproj/settings.ini[db]部分中的host
  • 从默认值,'localhost'

功能

env-based配置文件
可以通过MYPROJ_CONFIG提供额外的配置文件/directory/glob; 它优先于其他文件
默认选项

一个额外的字典可以作为ConfigGetter(defaults=some_dict)提供; 它在配置文件和环境变量之后使用。

它应该是一个dict,将节名映射到key => value

的dict
>>> config=ConfigGetter('myproj',defaults={'db':{'host':'localhost'}})>>> config.getstr('db.host')'localhost'
类型的getter

getconf可以将选项转换为几个标准类型:

config.getbool('db.enabled',False)config.getint('db.port',5432)config.getlist('db.tables')# Expects a comma-separated listconfig.getfloat('db.auto_vacuum_scale_factor',0.2)

概念

getconf依赖于几个关键概念:

命名空间

每个ConfigGetter在特定的命名空间(其第一个参数)中工作。

它的目标是在阅读环境时避免错误: 对于ConfigGetter(namespace='myproj'),只有环境变量 以MYPROJ_开头的将被读取。

但是,可以使用 ConfigGetter(namespace=getconf.NO_NAMESPACE)

项目的配置选项通常会增长很多; 为了限制复杂性,^ {TT1}$将值分割成部分, 类似于python的configparser模块。

根据实际配置,节的处理方式不同 来源:

  • section.key映射到环境变量的MYPROJ_SECTION_KEY
  • section.key映射到配置文件中的[section] key =
  • section.key映射到默认dict中的defaults['section']['key']
默认节

有些设置实际上是projet的“全局”设置。 这由未设置的节名称处理:

  • key映射到环境变量的MYPROJ_KEY
  • key映射到配置文件中的[DEFAULT] key =
  • key映射到默认dict中的defaults['DEFAULT']['key']

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
两个不同类中的java trycatch NullPointerException错误   java在安卓 studio中使用Eclipse类?   java Python在Android上的限制是什么?   java无法找到或加载主类com。太阳工具。javac。主hadoop mapreduce   json Java jersey客户端使用JsonArray的JsonArray   Java Swing GUI隐藏输入   java readobject方法引发ClassNotFoundException   java Transactional不会在Spring引导中使用数据JPA回滚已检查的异常   java如何返回通用枚举的枚举元素列表?   java中一种多线程负载平衡线程池   java运行。bat将无法正确打开命令提示符   java为什么C++给了你拥有非新分配对象的选项?   java Weka未找到主类错误   java SSL检查绕过SSLSocketFactory   Java8函数组合和