news 2026/6/8 15:31:20

python-dotenv:从 .env 文件加载环境变量

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python-dotenv:从 .env 文件加载环境变量

文章目录

  • python-dotenv:从 .env 文件加载环境变量

python-dotenv:从 .env 文件加载环境变量

python-dotenv 是一个用于读取.env文件并将键值对设置为环境变量的 Python 库,目前获得了 8,779 个 Star。

该库的设计目标是为遵循 12-factor 原则的应用提供配置管理方案。开发阶段通常需要手动设置环境变量,这种方式在频繁切换项目时不够方便。python-dotenv 允许在项目根目录放置.env文件,在应用启动时自动加载其中的配置,同时保留通过真实环境变量覆盖的能力。

安装方式如下:

pipinstallpython-dotenv

基础用法只需两行代码:

fromdotenvimportload_dotenv load_dotenv()

调用load_dotenv()后,.env文件中的变量会被读取到os.environ中,后续代码可以像访问普通环境变量一样使用它们。

默认行为遵循安全原则:不会覆盖已存在的环境变量。如需强制覆盖,可以传入override=True

.env文件的语法接近 Bash,支持注释和变量引用:

# 开发环境配置DOMAIN=example.orgADMIN_EMAIL=admin@${DOMAIN}ROOT_URL=${DOMAIN}/app

需要注意的是,变量引用需要使用${VAR}的形式,裸变量$VAR不会被解析。

除了直接修改环境变量,python-dotenv 还提供了dotenv_values函数。它与load_dotenv工作方式相近,但只返回解析后的字典,不改变当前环境:

fromdotenvimportdotenv_values config=dotenv_values(".env")

这个特性适合需要灵活合并多份配置的场景。例如,可以将共享配置和敏感配置分开存放,再按优先级合并:

importosfromdotenvimportdotenv_values config={**dotenv_values(".env.shared"),**dotenv_values(".env.secret"),**os.environ,}

python-dotenv 支持流式输入,可以从内存或网络等非文件源加载变量:

fromioimportStringIOfromdotenvimportload_dotenv config=StringIO("USER=foo\nEMAIL=foo@example.org")load_dotenv(stream=config)

对于 IPython 用户,该库提供了魔术命令扩展:

%load_ext dotenv%dotenv

命令行工具也包含在内。安装 CLI 依赖后,可以直接在终端查看和修改.env文件:

pipinstall"python-dotenv[cli]"dotenvsetUSERfoo dotenv list dotenv run -- python app.py

文件格式方面,python-dotenv 支持单行和多行值、单双引号、注释行以及export前缀。变量插值遵循 POSIX 规范,未定义变量会依次回退到环境变量值、默认值或空字符串。

如果需要临时禁用自动加载,可以设置环境变量PYTHON_DOTENV_DISABLED=1load_dotenv()将不再读取任何文件或流。

这个库解决的问题很具体:让本地开发和生产部署在环境变量层面保持一致,同时给开发者一个不必手动导出变量的工作流。它的代码量不大,但在 Python 项目的配置管理中被广泛使用。

这个库解决的问题很具体:让本地开发和生产部署在环境变量层面保持一致,同时给开发者一个不必手动导出变量的工作流。它的代码量不大,但在 Python 项目的配置管理中被广泛使用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 15:28:31

NVIDIA Profile Inspector完全指南:从新手到专家的显卡配置秘籍

NVIDIA Profile Inspector完全指南:从新手到专家的显卡配置秘籍 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 还在为游戏卡顿、画面撕裂和性能瓶颈而烦恼吗?NVIDIA Profile In…

作者头像 李华
网站建设 2026/6/8 15:28:14

Python版SimpleMKL多核SVM工具包,附电离层数据一键测试脚本

本文还有配套的精品资源,点击获取 简介:一套开箱即用的Python多核支持向量机(MKL)实现,核心是SimpleMKL算法,能自动学习多个基核的组合权重,提升小规模多源特征融合下的分类性能。包含完整模…

作者头像 李华
网站建设 2026/6/8 15:27:27

水泥毯施工风险多家指标PK:核心差异与场景匹配参考

水泥毯从应急抢险到水利护坡:行业正经历标准化与场景细分的关键期水泥毯作为一种柔性混凝土复合材料,近年在国内土工材料领域的应用边界持续拓宽。从最初在应急抢险场景中作为快速硬化覆盖层使用,到如今在河道护坡、沟渠衬砌、边坡防护等水利…

作者头像 李华
网站建设 2026/6/8 15:25:10

S32G QuadSPI控制器实战:从硬件配置到AUTOSAR驱动集成

1. 项目概述与核心价值在汽车电子领域,尤其是像S32G这样的高性能网关和域控制器芯片上,系统对启动速度、数据吞吐量和存储容量的要求日益严苛。S32G系列芯片本身不集成大容量内部闪存,因此,如何高效、可靠地连接外部存储设备&…

作者头像 李华
网站建设 2026/6/8 15:24:54

PDFMathTranslate:让学术文献跨越语言藩篱的智能翻译助手

PDFMathTranslate:让学术文献跨越语言藩篱的智能翻译助手 【免费下载链接】PDFMathTranslate PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务&#x…

作者头像 李华