• python 本地配置文件库 Dynaconf 简介


    【前言】

    在项目中经常会遇到以下几种需要用到配置文件的场景:

    1. 相同的配置参数用在不同的代码中,如果需要调整,则需要手动将各个使用到的地方都相应调整。
    2. 密码等信息不想硬编码在项目文件中。

    配置文件的格式有很多种,例如:json,ini,python模块,xml,yaml等也有各种各样的类库去处理配置文件,今天我们推荐一款好用的配置文件库 Dynaconf

    【Dynaconf 简介】

    官网:https://www.dynaconf.com/
    Dynaconf 是一个Python的第三方模块,旨在成为在 Python 中管理配置的最佳选择。
    它可以从各种来源读取设置,包括环境变量、文件、服务器配置等。
    它适用于任何类型的 Python 程序,包括 Flask 和 Django 扩展。

    【开始使用】

    安装

    pip install dynaconf
    

    初始化

    在你的项目的根目录中运行 dynaconf init 命令。

    cd path/to/your/project/
    dynaconf init -f toml
    

    会有类似如下的输出,说明初始化完成:

    ⚙️ Configuring your Dynaconf environment
    ------------------------------------------
     The file `config.py` was generated.
    ️ settings.toml created to hold your settings.
     .secrets.toml created to hold your secrets.
     the .secrets.* is also included in `.gitignore`
    beware to not push your secrets to a public repo.
     Dynaconf is configured! read more on https://dynaconf.com
    

    刚刚初始化的时候我们选择了 toml 格式。实际上你还可以选择 toml|yaml|json|ini|py ,不过 toml 是默认的,也是最推荐的配置格式。

    初始化完成后会创建以下文件:

    .
    ├── config.py # 需要被导入的配置脚本
    ├── .secrets.toml # 像密码等敏感信息配置
    └── settings.toml # 应用配置
    

    config.py 文件初始化了Dynaconf并加载了生成的配置文件,内容如下:

    from dynaconf import Dynaconf
    
    settings = Dynaconf(
        settings_files=['settings.toml', '.secrets.toml'],
    )
    

    编写配置

    初始化完成后你就可以编写你的配置,编辑settings.toml:

    key = "value"
    a_boolean = false
    number = 1234
    a_float = 56.8
    a_list = [1, 2, 3, 4]
    a_dict = {hello="world"}
    
    [a_dict.nested]
    other_level = "nested value"
    

    使用

    然后就可以在你的代码中导入并使用这些配置:

    from config import settings
    
    assert settings.key == "value"
    assert settings.number == 789
    assert settings.a_dict.nested.other_level == "nested value"
    assert settings['a_boolean'] is False
    assert settings.get("DONTEXIST", default=1) == 1
    

    dynaconf 会动态识别配置的格式,并且在使用的位置转成对应的格式,不需要手动进行格式转换

    如果是密码等敏感信息,你可以配置在 .secrets.toml 中:

    password = "s3cr3t"
    token = "dfgrfg5d4g56ds4gsdf5g74984we5345-"
    message = "This file doesn't go to your pub repo"
    

    .secrets.toml 文件会被自动加入到 .gitignore 文件中,这些信息不会被上传到Git仓库上。
    初始化时忽略文件会自动被调整:

    .secrets.*
    

    【总结】

    以上就是 Dynaconf 的简单使用介绍,使用过程中可能遇到的其他问题:

    层级项目config模块导入失败

    from config import settings
    

    如果在项目根目录初始化 dynaconf,会自动生成 config.py 文件,这时候,如果其他python脚本是在下层文件夹,那么该行代码就会导入失败,这是python包路径引用问题,可以通过在要使用的python文件头部加入以下代码:

    import sys, os
    
    sys.path.append(
        os.path.abspath(os.path.dirname(os.path.dirname(
            os.path.abspath(__file__)))))
    
    from config import settings
    

    这个时候,再导入 config 就不会再提示错误了

    Flask/Django项目中使用

    django:https://www.dynaconf.com/django/
    flask:https://www.dynaconf.com/flask/

  • 相关阅读:
    Linux的文本编辑和文本内容查看命令
    服务器日志查看处理(一)
    MAC 系统java开发环境搭建教程
    git撤销已经push到远端的commit
    Centos7 编译安装 Libmcrypt 库
    curl和wget的区别和使用
    docker 安装vim和yum命令
    docker安装GD扩展
    【docker】为docker下的php容器安装php-redis扩展【编译安装】
    mysql大表优化方案
  • 原文地址:https://www.cnblogs.com/7tiny/p/16211724.html
Copyright © 2020-2023  润新知