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

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

Python dotenv 库 load_dotenv() 函数用于从.env 文件读取键值对并注入操作系统环境变量,实现配置与代码分离。文章涵盖安装、基础用法及进阶参数(如自定义路径、强制覆盖),并提供 Django 和 Flask 集成示例。重点强调安全实践,包括将敏感文件加入.gitignore、创建.env.example 模板,以及在云平台上避免使用本地.env 文件而改用控制台配置。同时包含常见问题排查方案。

AiEngineer发布于 2026/3/27更新于 2026/6/1220 浏览

Python dotenv 库 load_dotenv() 使用指南

在 Python 项目开发中,管理数据库密码、API 密钥等敏感配置是常见痛点。硬编码不仅容易泄露到代码仓库,还导致本地开发、测试和生产环境切换困难。

load_dotenv() 来自 python-dotenv 库,是一个轻量级工具函数,用于从 .env 文件中读取键值对并注入操作系统的环境变量。它让敏感配置与代码彻底分离,是现代 Python 项目的标准实践。

核心优势

  • 避免敏感信息泄露:配合 .gitignore 防止误提交
  • 多环境无缝切换:通过不同配置文件管理 dev/staging/prod
  • 团队协作零冲突:配置独立于代码版本控制
  • 部署更安全:生产环境变量由运维或云平台管理

快速上手

1. 安装依赖

pip install python-dotenv

2. 创建 .env 文件

在项目根目录新建 .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

3. 加载并使用

在入口脚本(如 main.py)的最开始处调用加载函数。注意环境变量获取后永远是字符串类型,需根据业务逻辑转换。

from dotenv import load_dotenv
import os

# 加载当前目录下的.env 文件
load_dotenv()

# 安全获取变量,推荐配合默认值使用
debug_mode = os.getenv("DEBUG", "False") == "True"
api_key = os.getenv("API_KEY")
port = int(os.getenv("PORT", 5000))

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

进阶用法

指定自定义路径

如果 .env 文件不在项目根目录,可以显式指定路径:

load_dotenv(dotenv_path=".env.production")

强制覆盖已有变量

系统已存在的环境变量通常优先级更高,如需强制覆盖可设置 override=True:

load_dotenv(override=True)

框架集成示例

Django (settings.py 顶部):

from dotenv import load_dotenv
import os

load_dotenv(os.path.join(BASE_DIR, ".env"))

Flask (app.py 开头):

from dotenv import load_dotenv
from flask import Flask

# 必须在创建 app 实例前调用
load_dotenv()
app = Flask(__name__)

自动查找

开启 verbose 模式可自动向上级目录递归查找 .env 文件:

load_dotenv(verbose=True)

安全与最佳实践

实践说明
✅ .gitignore 必加将 .env 加入忽略列表,防止误提交
✅ 提供 .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 原则中的配置分离理念。只需几分钟,你的项目安全性和可维护性将迈上新台阶。

建议在新项目初始化时:

  1. 安装 python-dotenv
  2. 创建 .env + .env.example
  3. 在入口文件首行添加 load_dotenv()
  4. 将 .env 加入 .gitignore

参考资料:python-dotenv 官方文档

目录

  1. Python dotenv 库 load_dotenv() 使用指南
  2. 核心优势
  3. 快速上手
  4. 1. 安装依赖
  5. 2. 创建 .env 文件
  6. .env
  7. 3. 加载并使用
  8. 加载当前目录下的.env 文件
  9. 安全获取变量,推荐配合默认值使用
  10. 进阶用法
  11. 指定自定义路径
  12. 强制覆盖已有变量
  13. 框架集成示例
  14. 必须在创建 app 实例前调用
  15. 自动查找
  16. 安全与最佳实践
  17. 敏感配置文件
  18. 复制为 .env 并填入实际值
  19. 常见问题排查
  20. 结语
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Transformer 核心原理深度解析与 PyTorch 实战
  • 本地部署 AI 增强型 SearXNG 搜索引擎技术文档
  • Qwen3 与 Qwen Agent 智能体开发实战:接入 MCP 工具
  • AI 编程工具对比:GitHub Copilot、Trae、Cursor
  • Python 数据分析实战:模型评估、图像分析与性能优化
  • HBuilderX + Git Windows 配置实战:项目协作指南
  • OpenClaw 安全 AI 助理搭建与部署实战指南
  • Qclaw 快速上手:利用微信连接 AI 智能体的实践
  • Linux 命令行参数与环境变量:基础用法与底层原理
  • C++ 初阶:命名空间、输入输出、缺省参数与函数重载
  • Java 自定义等级字符串比较逻辑分析
  • 法律领域自然语言处理应用与实战
  • 深入理解 Java 虚拟机内存模型
  • XGBoost 机器学习实战指南:从安装到模型调优
  • GitHub Copilot 学生身份认证与激活完整指南
  • Go 语言泛型与 WebAssembly 技术解析
  • 5 分钟切换不同 AI 引擎:Codex 多模型支持实战指南
  • AI 技术资讯:Agent 进化与模型更新
  • Android 工程师面试指南:核心知识点梳理与备考策略
  • DeepSeek-R1 与 Kimi-1.5 技术报告解读:大道至简的推理优化

相关免费在线工具

  • 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