从settings.ini文件的特定部分获取特定设置的帮助程序
settings-helper的Python项目详细描述
在包中设置
在的模块目录中创建默认的/samplesettings.ini文件 您的包,带有一个[default]节和任何其他[sections] 您需要(即应用程序环境)
[default] something = 100 [dev] redis_url = redis://localhost:6379/1 something = 500 [test] redis_url = redis://localhost:6379/9 things = none, true, false, 1, 2.5, dogs
使用 跟随
include settings.ini
更新包的setup.py文件以包含 setting.ini文件并将settings-helper添加到install_requires 列表
from setuptools import setup, find_packages setup( name='package-name', version='0.0.1', ... packages=find_packages(), install_requires=[ 'settings-helper', ... ], include_package_data=True, package_dir={'': '.'}, package_data={ '': ['*.ini'], }, ... )
注意,您的包目录树如下所示
package-name ├── .gitignore ├── LICENSE.txt ├── MANIFEST.in ├── README.md ├── README.rst ├── package_name/ │ ├── __init__.py │ └── settings.ini └── setup.py
用法
在包的__init__.py中使用
import settings_helper as sh get_setting = sh.settings_getter(__name__) something = get_setting('something') something_else = get_setting('something_else', 'default_val')
将APP_ENV环境变量设置为节名称之一 启动python解释器/服务器时。APP_ENV默认为 dev如果未设置。
- get_settingfunc将返回请求的 如果在APP_ENV中指定的节中设置,则为变量。
- 如果变量不在节中,它将从 [default]部分
- 如果varialbe也不在[default]部分中,那么 返回在default关键字中传递的可选回退值 参数为get_setting(默认为空字符串)
- ^ STR 1 } $如果请求的变量存在于环境中(或其 将使用它,而不是从 settings.ini
- 该值自动转换为bool、none、int或float 如果应该
- 如果值包含(,;)中的任何一个,则转换后的值列表 将返回
第一次调用settings_getterfunc时,它会查找 settings.ini文件在~/.config/package-name/settings.ini中。
- 如果找不到,它将从中复制default settings.ini 模块的安装目录到该位置
- 如果在模块的安装中不存在SETIONG.IN文件 目录,将引发异常
替代用法
import settings_helper as sh settings = sh.get_all_settings(__name__)
get_all_settingsfunc返回包含所有节的dict “违约”除外。
- 如果在“默认”中定义了一个设置,但不是在特定的 部分中,“默认”中的设置将显示在部分下
- 如果一个设置(或大写的等效值)被定义为一个环境 变量,该值将用于使用它的所有节