如何用Pydantic读取.env文件变量?遇字段缺失验证错误
解决Pydantic Settings读取.env变量失败的问题
问题根源
你遇到的验证错误是因为Pydantic无法从.env文件中匹配到对应字段,主要有两个可能原因:
- .env文件中变量名与等号之间的空格会被解析为变量名的一部分,导致匹配失败
- Pydantic默认对环境变量名大小写敏感,你的类字段是小写
a/b,但.env里是大写A/B
修复方案
方案1:修正.env文件格式
去掉变量名和等号之间的空格(引号可保留或移除,不影响解析):
A='aaa' B='bbb'
或者简化为:
A=aaa B=bbb
方案2:配置字段别名(无需修改.env)
在Settings类中为字段指定对应.env的大写别名,同时开启别名匹配:
from pydantic_settings import BaseSettings, SettingsConfigDict from pydantic import Field class Settings(BaseSettings): a: str = Field(alias='A') b: str = Field(alias='B') model_config = SettingsConfigDict( env_file='.env', env_file_encoding='utf-8', populate_by_name=True ) config = Settings()
方案3:关闭大小写敏感
让Pydantic自动将环境变量名转为小写匹配类字段:
from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): a: str b: str model_config = SettingsConfigDict( env_file='.env', env_file_encoding='utf-8', case_sensitive=False ) config = Settings()
验证
修改后执行以下代码确认变量读取成功:
print(config.a) # 输出 'aaa' 或 aaa print(config.b) # 输出 'bbb' 或 bbb
内容的提问来源于stack exchange,提问作者D.G.
相关产品推荐
相关产品推荐

