Pydantic v2加载.env时忽略嵌套模型变量问题求助
解决方案
核心问题:参数名拼写错误
你的SettingsConfigDict中使用了错误的参数名:env_nested_delimeter,正确的参数名是env_nested_delimiter(少写了一个字母i)。这个拼写错误导致Pydantic无法识别嵌套环境变量的分隔规则,因此无法将PROJECT__NAME解析到project.name字段中,最终触发必填字段缺失的验证错误。
修正后的settings.py代码
from pydantic import BaseModel from pydantic_settings import BaseSettings, SettingsConfigDict class ProjectConfig(BaseModel): name: str class AppSettings(BaseSettings): model_config = SettingsConfigDict( env_file=".env", case_sensitive=False, env_nested_delimiter="__", # 修正拼写错误 ) project: ProjectConfig app_settings = AppSettings()
额外优化建议
- 简化.env文件格式:可以去掉值的引号,避免潜在的解析歧义:
PROJECT__NAME=Some name - 路径验证:由于你从项目根目录执行命令,
env_file=".env"会正确加载根目录下的.env文件,无需调整路径。
验证效果
修正后重新执行python -m namespace.subnamespace.main,应该会正常输出Some name,不再触发ValidationError。
内容的提问来源于stack exchange,提问作者cosmicKXCkitten
相关产品推荐
相关产品推荐

