pydantic 支持Dotenv 文件设置变量
1. 安装
pip install pydantic
pip install pydantic[dotenv]
注意:
安装pip install pydantic[dotenv]时会提示no matches found: pydantic[dotenv],zsh会将[], ^等这些bash中并不会被视为元字符的特殊字符进行扩展,所以必须在前面加上\转义或者加上引号''让zsh识别成普通字符串pip install 'pydantic[dotenv]'或pip install pydantic\[dotenv\]
2. 支持.env文件设置,有两种加载模式
class Settings(BaseSettings):
...
class Config:
env_file = '.env'
env_file_encoding = 'utf-8'
3. 完整代码实现
3.1 python项目下新建一个.env文件
如:
NAME=test
PASSWORD=123456
TEST_DATA=just a test
NUM=10
注意:是不是string类型,即有没有双引号没什么关系
3.2 python项目下新建一个settings.py文件
如:
from pydantic import BaseSettings, Field, SecretStr
class Settings(BaseSettings):
root: PosixPath = Path(__file__).parent.absolute()
webhook_uri: str = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1234567e-6947-4260-8c85-812985c6b622"
class DB(BaseSettings):
account: str = Field(..., env='NAME')
password: SecretStr = Field(..., env='PASSWORD')
data: str = Field(..., env='TEST_DATA')
num: int = Field(..., env='NUM')
class Config:
env_file = '.env'
env_file_encoding = 'utf-8'
settings = Settings()
注意:
1)Field:可用于提供有关字段和验证的额外信息,如设置必填项、可选、最大值、最小值、字符串长度等限制
-
Field(None) 是可选字段,不传的时候值默认为None
-
Field(…) 是设置必填项字段
2)SecretStr、SecretBytes 敏感信息,将被格式化为'**********‘
3)该类继承自BaseSettings类
3.3 使用上述类
from settings import settings
print(settings.DB().account)
print(settings.DB().password)
print(settings.DB().data)
print(settings.DB().num)
# 打印结果如下:
# test
# **********
# just a test
# 10
4. 项目结构截图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!