YAML 配置文件未在 dyanconf 设置中加载
Posted
技术标签:
【中文标题】YAML 配置文件未在 dyanconf 设置中加载【英文标题】:YAML config file is not loaded in dyanconf settings 【发布时间】: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
我错过了什么吗?
【问题讨论】:
【参考方案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,它会检测语法问题。所以我确信我的文件中没有语法问题。以上是关于YAML 配置文件未在 dyanconf 设置中加载的主要内容,如果未能解决你的问题,请参考以下文章