从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第三方库


热门话题
在Android应用程序中处理新活动时出现java NullPointerException   从PSV文件读取Java   在JavaSwing中将方法从一个类传递到另一个类   带有MongoDB错误的java Vertx ClassNotFoundException:com。mongodb。联系溪流工厂   在java中替换2D数组中的数字?   java Avro方案空布尔和双整数布尔的写并集   java导入组织。neo4j无法解决?   从另一个获取变量。使用反射的java文件   Java:以格式化字符串的形式返回具有非常不同的条目长度的2D数组   java客户端应用程序正在从IBMMQ接收不同格式的消息体   java在我的主循环中的步骤有问题   java如何正确安装来自sslforfree的证书。tomcat服务器上的com   java RecyclerView变更单永久   java如何获得屏幕的精确中间位置,即使调整了大小