You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:42:40