配置与环境变量
python-dotenv 加载 .env、os.environ、pydantic-settings
配置与环境变量
把密钥和配置硬编码在代码里是安全灾难。.env 文件 + python-dotenv 是标准方案。
学完本章你将: 掌握 dotenv 加载 .env、os.environ、pydantic-settings。
python-dotenv
python
# .env 文件(不提交到 Git)
# DATABASE_URL=postgresql://user:pass@localhost/db
# API_KEY=sk-xxxxx
# DEBUG=true
from dotenv import load_dotenv
import os
load_dotenv() # 加载 .env 到 os.environ
db_url = os.getenv("DATABASE_URL")
api_key = os.getenv("API_KEY")
debug = os.getenv("DEBUG", "false").lower() == "true"
.gitignore
# .gitignore
.env
.env.local
.env.production
多环境配置
python
# 根据环境加载不同文件
import os
from dotenv import load_dotenv
env = os.getenv("APP_ENV", "development")
load_dotenv(f".env.{env}")
pydantic-settings —— 类型安全的配置
python
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
database_url: str
api_key: str
debug: bool = False
max_connections: int = 10
class Config:
env_file = ".env" # 自动从 .env 加载
settings = Settings()
print(settings.database_url)
# 类型自动转换:debug 是 bool, max_connections 是 int
💡 pydantic-settings 提供类型验证、默认值、自动转换——比手写
os.getenv安全得多。