跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python dotenv 库 load_dotenv() 使用指南:环境变量管理与安全实践

Python 的 python-dotenv 库及其 load_dotenv() 函数的使用方法。该函数用于从 .env 文件中读取键值对并注入到操作系统环境变量中,实现敏感配置与代码分离。内容包括安装步骤、创建 .env 文件、代码加载示例、进阶用法(指定路径、覆盖变量)、框架集成(Django/Flask)以及安全最佳实践(如 .gitignore 配置)。同时提供了常见问题排查和云平台部署建议,强调生产环境应通过控制台设置环境变量而非依赖本地文件。

监控大屏发布于 2026/3/30更新于 2026/10/23109 浏览

Python dotenv 库 load_dotenv() 使用指南

在开发 Python 项目时,常面临数据库密码、API 密钥泄露风险,以及多环境配置切换困难等问题。load_dotenv() 来自 python-dotenv 库,是一个轻量级工具函数,用于从 .env 文件中读取键值对,并注入到操作系统的环境变量中。它让敏感配置与代码彻底分离,是现代 Python 项目的标准实践。

核心价值

  • 避免敏感信息泄露(配合 .gitignore)
  • 无缝切换多环境配置(dev/staging/prod)
  • 团队协作零冲突
  • 部署更安全(生产环境变量由运维管理)

快速上手

1. 安装库
pip install python-dotenv
2. 创建 .env 文件(项目根目录)
# .env
DEBUG=True
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb
API_KEY=sk-xxxxxx-secret-key
SECRET_KEY=your-django-secret-key-here
PORT=8000

命名规范:全大写 + 下划线,值含空格需加引号(如 NAME="John Doe")。

3. 在代码中加载并使用
from dotenv import load_dotenv
import os

# 加载 .env 文件(默认当前目录)
load_dotenv()

# 安全获取变量(推荐使用 os.getenv)
# 环境变量值永远是字符串类型,需要处理后返回布尔类型
debug_mode = os.getenv("DEBUG", "False") == "True"
api_key = os.getenv("API_KEY")
port = int(os.getenv("PORT", 5000))  # 提供默认值防崩溃

print(f"服务运行在端口:{port}")

进阶技巧

指定自定义路径
load_dotenv(dotenv_path=".env.production")  # 加载生产环境配置
强制覆盖已有变量(override=True)
load_dotenv(override=True)  # 覆盖系统已存在的同名环境变量
框架集成示例

Django(settings.py 顶部):

from dotenv import load_dotenv
load_dotenv(os.path.join(BASE_DIR, '.env'))

Flask(app.py 开头):

from dotenv import load_dotenv
load_dotenv()  # 必须在创建 app 前调用
from flask import Flask
app = Flask(__name__)
自动查找(无需指定路径)(verbose=True)
load_dotenv(verbose=True)  # 自动向上级目录查找 .env

安全与最佳实践

实践说明
✅ .gitignore 必加将 .env 加入 .gitignore,防止误提交
✅ 提供 .env.example创建模板文件供团队参考(不含真实值)
✅ 验证必填变量启动时检查关键变量是否存在
❌ 禁止提交真实 .env尤其是含密码/密钥的文件
🌐 生产环境慎用云平台(如 Heroku/AWS)应通过控制台设置环境变量

.gitignore 示例:

# 敏感配置文件
.env
.env.local
.env.production

.env.example 模板示例:

# 复制为 .env 并填入实际值
DATABASE_URL=your_database_url_here
API_KEY=your_api_key_here
DEBUG=False

常见问题排查

问题解决方案
加载后仍取不到值检查:1. .env 路径是否正确 2. 变量名大小写 3. 是否在 load_dotenv() 后调用 os.getenv()
中文乱码保存 .env 为 UTF-8 编码
变量含空格/特殊字符用引号包裹:MSG="Hello World!"
Docker 中不生效确保 .env 被 COPY 进镜像,或使用 --env-file 参数

为什么它如此重要?

'配置即代码'是 DevOps 黄金准则。load_dotenv() 以极简设计践行了 12-Factor App 原则中的 III. Config:

'将配置存储于环境变量中,与代码严格分离。'

它不仅是工具,更是一种工程素养的体现——保护用户数据、提升协作效率、筑牢安全防线。

目录

  1. Python dotenv 库 load_dotenv() 使用指南
  2. 核心价值
  3. 快速上手
  4. 1. 安装库
  5. 2. 创建 .env 文件(项目根目录)
  6. .env
  7. 3. 在代码中加载并使用
  8. 加载 .env 文件(默认当前目录)
  9. 安全获取变量(推荐使用 os.getenv)
  10. 环境变量值永远是字符串类型,需要处理后返回布尔类型
  11. 进阶技巧
  12. 指定自定义路径
  13. 强制覆盖已有变量(override=True)
  14. 框架集成示例
  15. 自动查找(无需指定路径)(verbose=True)
  16. 安全与最佳实践
  17. 敏感配置文件
  18. 复制为 .env 并填入实际值
  19. 常见问题排查
  20. 为什么它如此重要?

更多推荐文章

查看全部
  • Linux Screen 命令详解:功能、安装与使用
  • Windows 下安装 OpenClaw 并接入飞书机器人指南
  • Kubernetes 集群 CPU 使用率监控与告警设置方案
  • 百川 2-13B-Chat WebUI v1.0 故障排查手册:6 大常见问题解决
  • Lit 与 Alpine.js:轻量级前端开发的两种路径
  • Spring AI 使用 MySQL 持久化 ChatMemory 实战
  • Windows 部署 OpenClaw:本地 AI 助手搭建与公网访问指南
  • Stable Diffusion 基础:ControlNet 人体姿势控制详解
  • 四大 AI 编程工具深度对比:TRAE、Qoder、Cursor 与 Copilot 选型指南
  • 数据结构与算法核心知识点梳理及学习建议
  • 飞牛 NAS 更换网络环境后 IP 无法访问的解决方法
  • 算法:位运算详解及常用技巧 (& ^ ~ -n n-1)
  • 人工智能行业产品经理薪资分析与能力要求
  • C++ 协程深度解析:从内部机制到实用场景
  • 数据结构:二叉树基础概念与堆实现详解
  • Linux 进程间通信:命名管道(FIFO)实战与原理
  • 民用无人机新规 2026 年 5 月实施:实名登记与激活要求详解
  • Golang 后端性能优化手册:高级优化技巧
  • Java JDK 21 安装与环境配置指南
  • IDA Pro MCP:用 AI 驱动逆向分析实战

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online