Python 使用 dotenv 管理环境变量文件

使用 python-dotenv 可安全管理 Python 项目中的环境变量。通过 pip install python-dotenv 安装后,在项目根目录创建 .env 文件(如 DATABASE_URL=...),并将其加入 .gitignore 防止泄露。在代码中导入 load_dotenv() 并调用以加载变量,再用 os.getenv() 获取值,注意非字符串类型需手动转换。支持指定文件路径、覆盖现有变量等进阶用法,建议在开发阶段使用,生产环境优先采用系统级配置。合理使用可提升项目安全性与可维护性。

在 Python 项目中,使用 python-dotenv 是管理环境变量的常用做法,尤其适合将敏感信息(如 API 密钥、数据库密码)从代码中分离出来。通过读取本地的 .env 文件,可以避免将配置硬编码或暴露到版本控制中。

安装 python-dotenv

首先需要安装 python-dotenv 包:

pip install python-dotenv

安装完成后,就可以在项目中加载和使用环境变量。

创建 .env 文件

在项目根目录下创建一个名为 .env 的文件,内容格式为 KEY=VALUE,例如:

DATABASE_URL=postgresql://user:pass@localhost/mydb
API_KEY=your_secret_api_key
DEBUG=True
SECRET_KEY=mysecretkey123

注意:.env 文件应添加到 .gitignore 中,防止提交到代码仓库。

在代码中加载环境变量

使用 load_dotenv() 函数读取并加载环境变量:

from dotenv import load_dotenv
import os

加载 .env 文件中的变量

load_dotenv()

获取变量值

database_url = os.getenv("DATABASE_URL") api_key = os.getenv("API_KEY") debug = os.getenv("DEBUG") == "True" # 注意:字符串转布尔需手动处理

os.getenv() 返回字符串或 None,如果变量不存在。对于非字符串类型(如布尔、数字),需要额外转换。

进阶用法与建议

  • 指定路径:load_dotenv(".env.dev") 可加载不同环境的配置文件。
  • 覆盖设置:load_dotenv(override=True) 允许覆盖已存在的环境变量。
  • 与 settings 集成:可在配置模块中统一加载,例如在 Django 或 Flask 项目启动时调用一次 load_dotenv()
  • 生产环境提醒:部署时通常使用系统级环境变量,无需依赖 .env 文件,但开发阶段非常实用。

基本上就这些。合理使用 python-dotenv 能提升项目安全性与可维护性,让配置管理更清晰。不复杂但容易忽略细节,比如类型转换和文件路径问题。