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

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

Python dotenv 库提供 load_dotenv() 函数,用于将 .env 文件中的键值对注入系统环境变量。实现配置与代码分离,避免敏感信息泄露。配合 .gitignore 提交模板文件,生产环境建议通过云平台控制台管理变量。支持自定义路径、覆盖模式及多环境切换,是 Python 项目标准实践。

PgDevote发布于 2026/3/22更新于 2026/8/2250 浏览

在开发 Python 项目时,配置管理往往是个痛点。数据库密码、API 密钥如果硬编码在代码里,一旦提交到 GitHub 就可能泄露;本地、测试和生产环境的配置切换也容易导致混乱。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. 加载并使用

在代码入口处调用 load_dotenv(),之后通过 os.getenv() 获取变量。需要注意的是,环境变量值永远是字符串类型,需要自行处理类型转换。

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=True 后,会自动向上级目录查找 .env 文件,适合嵌套项目结构。

安全与最佳实践

实践说明
✅ .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

常见问题排查

  • 加载后仍取不到值:检查 .env 路径是否正确,变量名是否区分大小写,确保在 load_dotenv() 之后调用 os.getenv()。
  • 中文乱码:保存 .env 文件时确保使用 UTF-8 编码。
  • 变量含空格/特殊字符:用双引号包裹,例如 MSG="Hello World!"。
  • Docker 中不生效:确保 .env 被 COPY 进镜像,或使用 --env-file 参数。

结语

遵循'配置即代码'的 DevOps 准则,load_dotenv() 以极简设计践行了 12-Factor App 原则中的配置分离理念。只需几分钟,为你的项目添加 .env 管理和 .gitignore 保护,安全性和可维护性将迈上新台阶。

目录

  1. 核心优势
  2. 快速上手
  3. 1. 安装依赖
  4. 2. 创建 .env 文件
  5. .env
  6. 3. 加载并使用
  7. 加载.env 文件(默认当前目录)
  8. 安全获取变量
  9. 进阶用法
  10. 指定自定义路径
  11. 强制覆盖已有变量
  12. 框架集成示例
  13. 必须在创建 app 前调用
  14. 自动查找
  15. 安全与最佳实践
  16. 敏感配置文件
  17. 复制为 .env 并填入实际值
  18. 常见问题排查
  19. 结语
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Win11 本地部署 OpenClaw:集成 Telegram 机器人与网页搜索功能
  • Python 语言概述、核心特性及环境搭建指南
  • 人工智能时代转型 AI 产品经理指南:核心技能与实战路径
  • 城市场景下无人机三维路径规划的多目标粒子群优化算法 NMOPSO
  • Python 逆向工程:PyInstaller 字节码提取与恢复指南
  • GLPI开源IT资产管理平台功能与部署实践
  • C++ 递归算法实战:汉诺塔问题详解
  • 2026 年 AI 学习路线:从入门到精通
  • C++ AVL 树(平衡搜索树)概念讲解与模拟实现
  • Node.js+Vue 政府公用车辆管理系统设计与实现
  • OpenClaw 本地部署与飞书机器人接入指南
  • Claude Code 本地化部署教程:接入 Ollama 实现离线开发
  • Dali T6/T6Pro 救砖实战:macOS/Windows 用 mtkclient 修复 Fastboot 无限重启
  • C++ 多态机制详解:虚函数与动态绑定
  • 零成本部署:国内畅玩 n8n 与私有 AI 模型指南
  • 国内如何付费升级 GitHub Copilot 专业版
  • AI-Goofish-Monitor:闲鱼商品智能监控与自动化分析工具
  • Spring Cloud Gateway Web MVC 使用指南
  • 大模型面经:LoRA 原理与微调实战总结
  • 基于 Llama-Factory 的智能制造工单理解系统

相关免费在线工具

  • 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