本文目录导读:

默认情况下,Pydantic 不会自动加载环境变量。
Pydantic v2 主要通过以下方式加载环境变量,需要你明确指定或使用特定配置:
最常用的方式:Field(validation_alias) + SettingsConfigDict
在 Pydantic v2 中,通常使用 BaseSettings 类(来自 pydantic-settings 库)并配合 SettingsConfigDict 来自动加载环境变量。
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_prefix='MYAPP_') # 可选:环境变量前缀
database_url: str = "default_localhost" # 如果环境变量存在,会自动覆盖
api_key: str = "default_key"
debug: bool = False
# 实例化时会自动读取环境变量
settings = Settings() # 此时会从 os.environ 中读取 DATABASE_URL, API_KEY, DEBUG
手动加载环境变量
如果不使用 BaseSettings,你需要手动读取:
import os
from pydantic import BaseModel, Field
class Config(BaseModel):
database_url: str = Field(default=os.getenv("DATABASE_URL", "default_url"))
api_key: str = Field(default=os.getenv("API_KEY", "default_key"))
这不是自动的,每次实例化时都会读取当前的环境变量。
注意事项
-
Pydantic v2 已将
BaseSettings分离到独立库:需要额外安装pydantic-settingspip install pydantic-settings
-
环境变量名称匹配规则:
- 默认情况下,环境变量名与字段名 大小写不敏感 匹配
- 可以通过
env_prefix、env_file等配置调整
-
.env文件自动加载:class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8") database_url: str这会让 Pydantic 自动从
.env文件加载环境变量。
| 使用方式 | 是否自动加载 | 需要安装 |
|---|---|---|
普通 BaseModel |
❌ 否 | 不需要 |
BaseSettings(标准方式) |
✅ 是 | pydantic-settings |
手动指定 Field(default=os.getenv(...)) |
❌ 否(但读取了环境变量) | 不需要 |
最佳实践:使用 pydantic-settings 的 BaseSettings 类,它会从环境变量和 .env 文件自动加载。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播