从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 “违约”除外。

  • 如果在“默认”中定义了一个设置,但不是在特定的 部分中,“默认”中的设置将显示在部分下
  • 如果一个设置(或大写的等效值)被定义为一个环境 变量,该值将用于使用它的所有节

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

推荐PyPI第三方库


热门话题
如何使用Java中的扫描仪读取文本文件中的特定字符?   java如果我们在hibernate中开始事务但不提交它,会发生什么?   Azure CosmosDB Java Springboot中的无服务器帐户不支持spring boot设置提供吞吐量或容器自动导航   附加到新对象的Java注释?   java如何将自定义文本视图添加到。在Kotlin中添加通知操作   java Shibboleth添加_OpenSAMLcookies,导致HTTP头大小>8k   分布式传感器数据(~40Hz)的高效Java观测器设计   java如何在while循环外声明数组,但在while循环中初始化它?   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   java替换二维数组的值   java如何在任务栏上创建Windows7加载栏   java如何在组件注释bean中使用会话或RequestScope bean?   java netbeans freermarker插件错误:在实现版本中请求netbeans桥的插件Lexer   java谷歌地图方向。加载失败,返回服务器错误   java当我试图递归地计算两个值之间的整数之和时,为什么结果返回一个奇怪的值?   java如何通过html文件的用户获取运行时输入,以使用Jsoup进行解析?