首页 > 编程语言 >python版本管理Dynaconf模块

python版本管理Dynaconf模块

时间:2024-01-29 15:47:34浏览次数:30  
标签:settings python secrets BASE toml 模块 Dynaconf DIR

示例代码

import os
import sys
from pathlib import Path
from dynaconf import Dynaconf

_BASE_DIR = Path(__file__).parent.parent
_CONFIG_DIR = _BASE_DIR / 'config'
LOG_DIR = _BASE_DIR / 'files' / 'logs'
TOKEN_FILE = _BASE_DIR / 'config' / 'xxl_job.token'
SHELVEDB_FILE = _BASE_DIR / 'DB' / 'SHELVE'

settings_files = [
    _CONFIG_DIR / 'settings.toml',
    _CONFIG_DIR / '.secrets.toml',
]  # 指定加载默认配置的绝对路径


settings = Dynaconf(
    envvar_prefix="CRM",  # 环境变量前缀。设置`MSP_FOO='bar'`,使用`settings.FOO`
    settings_files=settings_files,
    environments=False,  # 启用多层次日志,支持 dev, pro
    load_dotenv=True,  # 加载 .env
    env_switcher="MSP_ENV",  # 用于切换模式的环境变量名称 MSP_ENV=production
    lowercase_read=True,  # 禁用小写访问, settings.name 是不允许的
    includes=[os.path.join(sys.prefix, 'settings.toml')],  # 自定义配置覆盖默认配置
    base_dir=_BASE_DIR,  # 编码传入配置
)

使用方法

安装, 使用pip

`pip install dynaconf`

初始化, 项目的根目录中运行 dynaconf init 命令

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

生成如下文件

.
├── config.py # 需要被导入的配置脚本
├── .secrets.toml # 像密码等敏感信息配置
└── settings.toml # 应用配置
在settings.toml文件中编写配置
[DATABASE.CONFIG.MSP]
DRIVER='mysql+pymysql'
USER='my_user'

已有项目不使用init

新建config文件, 新建__init__.py文件,编写示例代码, 其他要使用的模块中导入from config import settings

项目中使用

直接使用settings.DATABASE.CONFIG.MSP.DRIVER样式即可调用

标签:settings,python,secrets,BASE,toml,模块,Dynaconf,DIR
From: https://www.cnblogs.com/ishuangjin/p/17994652

相关文章

  • BOSHIDA DC电源模块的未来发展方向与挑战
    BOSHIDADC电源模块的未来发展方向与挑战未来DC电源模块的发展方向和面临的挑战包括以下几个方面:高效率和节能:随着人们对环境保护的重视和能源消耗的削减要求,DC电源模块需要更高的转换效率和更低的功耗。研发更高效的电源拓扑结构和优化电路设计是未来的发展方向。 小型化和......
  • 如何在 Python 中使用 jieba 库来进行关键词提取
    jieba是一个流行的中文分词库,通过简单的几行代码,您就可以轻松地使用jieba库来提取中文文本中的关键词。本文将介绍jieba库的安装方法以及关键词提取的示例代码,并希望对您有所帮助。正文:1.安装jieba库:首先,我们需要安装jieba库。可以使用以下命令来安装jieba库:```pipinstalljieba......
  • python日志模块logging
    示例代码#导入日志模块importloggingimportlogging.configfromconfigimportLOG_DIR,settingsdefconfig_logging():#定义日志配置方法config_dict={#定义日志配置字典'version':1,'disable_existing_loggers':False,'......
  • Python中/与//的区别是什么?其如何使用?
    在学习Python或者使用Python进行工作的时候,大家应该都看到过“/”和“//”,它们是Python算术运算符中比较常用的两个运算符,那么Python语言中/与//的区别是什么?如果你还不清楚,这篇文章千万不要错过。Python语言中/与//的区别是什么?在Python中/表示浮点整除法,返回浮点结......
  • 四、python数据类型的性能
    四、python数据类型的性能比较列表list和字典dict两种内置数据类型上各种操作大O数量级两种都属于容器,都是可变类型。类型listdict索引自然数i不可变类型值key添加append/extend/insertb[k]=v删除pop/removepop更新a[i]=vb[k]=v正查a[i]/a[i......
  • 模块化架构
    模块化架构是一种软件设计风格,强调整体应用程序中的模块化。它的目标是将整体架构的简单性和直接部署模型与通常与微服务相关的模块化和可维护性结合起来。增强的模块化:模块通过将代码组织到不同的模块中来促进关注点的清晰分离。这种分离增强了代码库的可维护性和可理解性,使团队......
  • 在Python中,子类继承父类并调用父类的构造方法有几种方式: 1. 如果子类没有重写`__init
    在Python中,子类继承父类并调用父类的构造方法有几种方式:1.如果子类没有重写`__init__`,实例化子类时,会自动调用父类定义的`__init__`¹。```pythonclassFather(object):  def__init__(self,name):    self.name=nameclassSon(Father):  passson=So......
  • 在Python的Tkinter库中,`ttk.Combobox`是一个组合框控件,它允许用户从下拉列表中选择一
    在Python的Tkinter库中,`ttk.Combobox`是一个组合框控件,它允许用户从下拉列表中选择一个选项,也可以让用户输入内容。以下是一些主要的参数和方法:1.**创建Combobox**¹²:  ```python  importtkinterastk  importtkinter.ttkasttk  root=tk.Tk()  ......
  • 在Python中,你可以使用以下代码来更改ttk.Combobox下拉框选项的文字大小¹: ```python
    在Python中,你可以使用以下代码来更改ttk.Combobox下拉框选项的文字大小¹:```pythonimporttkinterastkfromtkinterimportttkroot=tk.Tk()root.geometry('500x500')#设置所有Combobox的下拉框文字大小root.option_add("*TCombobox*Listbox.font","Arial20")combob......
  • Python下载的11种姿势,一种比一种高级!
    今天我们一起学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、AmazonS3和其他资源。 最后,你将学习如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策略。1、使用requests你可以使用requests模块从一个UR......