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重启/加载另一个片段| Android   数据中带分号的java字符串正则表达式解析   Javascript与Java字符串编码   java双值反转关闭   java如何为记录定制equals/hashCode?   范围上的java NullPointerException。在生成的Excel文件(JExcel/Apache POI)上插入ZK API   Java scanner提供的简单注册验证表单   java实现无主关系googleappengine   java如何使用hibernate更新单个单元格   如何衡量(Java)应用程序的文件访问性能(和容量)   检查复杂列表的java REST服务   用户界面JavaGUI运行不平稳   投资银行业中的java摇摆   java将ArrayList从字母顺序排序到最频繁/最不频繁   Trie数据结构Java   java在JNA定义需要回调的地方传递原始函数指针?   使用Guice在所有对象中注入java实例   在java中无法获取正确的文本高度。awt。BufferdImage/Graphics2D