【问题标题】:YAML config file is not loaded in dyanconf settingsYAML 配置文件未在 dyanconf 设置中加载
【发布时间】:2020-09-30 09:23:36
【问题描述】:

这是我的项目结构:

project/
   src/
      settings.py
   examples/
      example-config.yaml
# settings.py
OUTPUT_DIR = "generated"
# example-config.yaml
OUTPUT_DIR: "custom_dir"

根据文档settings.py 会自动加载。因此下面的代码有效:

from dynaconf import settings
print(settings.OUTPUT_DIR) # prints -> generated

但是,当尝试加载 example-config.yaml 时,没有任何变化。见下文:

from dynaconf import settings
settings.load_file("../examples/example-config.yaml")
print(settings.OUTPUT_DIR) # prints -> generated. expected -> custom_dir

我错过了什么吗?

【问题讨论】:

    标签: python-3.x configuration yaml config pyyaml


    【解决方案1】:

    你应该明确设置导入的根目录,我遇到了类似的问题,找不到配置文件,dynaconf 默默地抑制了所有错误。

    对于较旧的 Dynaconf,您可以将 ROOT_PATH_FOR_DYNACONF 环境变量设置为项目的基本路径。

    对于 Dynaconf 版本 > 3,建议您自己制作一个 Dynaconf 实例。你应该在那里设置root_path

    config.py 文件:

    from dynaconf import Dynaconf
    
    settings = Dynaconf(root_path="/path/to/project")
    

    那么就可以使用相对导入了。

    from project.config import settings
    
    settings.load_file("examples/example-config.yaml")
    

    【讨论】:

      【解决方案2】:

      OUTPUT_DIR = "custom_dir"
      

      在 YAML 中是一个单一的标量,而不是字典。您想使用正确的 YAML 语法,即

      OUTPUT_DIR: custom_dir
      

      【讨论】:

      • 其实我的问题是一个错误。 yaml文件实际上是正确的。我修复了错误。问题仍然存在。
      • 另外,由于 dynaconf 使用 PyYaml,它会检测语法问题。所以我确信我的文件中没有语法问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-27
      • 2018-12-18
      • 2020-02-18
      • 1970-01-01
      • 2023-04-09
      • 2016-02-05
      • 1970-01-01
      相关资源
      最近更新 更多