python-dotenv 和 dotenv区别

📅 2026/6/27 6:27:00
python-dotenv 和 dotenv区别
在 Python 开发中这两者其实很容易让人产生混淆。一句话总结它们在 PyPI 官方包管理器中是两个完全不同的库但由于历史原因和命名冲突它们极易引发环境灾难。真正的区别以及你在开发中应该怎么选可以看以下三个维度的对比1. 核心身份与现状谁才是正统python-dotenv推荐、绝对的主流这是目前整个 Python 生态中处理.env配置文件把环境变量注入到os.environ的标准库。无论是 Django、Flask 还是现代的 FastAPI、LangChain 项目底层推荐的全部是它。它更新活跃目前依然在持续维护。dotenv已过时、别用这是一个非常古老且已经废弃Deprecated的早期项目。它最后一次更新停留在很多年前原作者早已不再维护。⚠️ 2. 最致命的冲突代码导入名相同名字劫持这两者最让人抓狂的地方在于不管你在终端安装的是哪一个它们在 Python 代码里的导入命令一模一样都是Pythonimport dotenv如果你在同一个虚拟环境中同时安装了这两个包或者一不小心把它们都写进了requirements.txt后安装的那个包会无情地覆盖Overwhelm先安装的那个包。由于python-dotenv的核心 API如load_dotenv()在古老的dotenv包里根本不存在你的代码会直接疯狂报错AttributeError: module dotenv has no attribute load_dotenv。️ 3. 2026 正确的使用姿势与环境救急在平时编写机器学习、LLM 或者是后端项目时请严格遵守以下规范✅ 规范的安装与使用在终端中使用现代包管理器如pip或高效的uv安装时必须输入全称Bashpip install python-dotenv # 或者使用 uv uv add python-dotenv在代码中这样调用Pythonimport os from dotenv import load_dotenv # 加载当前目录下的 .env 文件到系统环境变量 load_dotenv() # 读取变量 api_key os.getenv(OPENAI_API_KEY) 遇到AttributeError报错怎么救急如果你在运行开源大模型项目或同学的代码时发现报了上面提到的错误说明你的虚拟环境已经被“污染”了。请在终端执行以下组合拳将其重置Bash# 1. 把两个冲突的包全部强行卸载干净 pip uninstall dotenv python-dotenv -y # 2. 重新精准安装正确的主流库 pip install python-dotenv