Python: 通过 .env 文件配置不同环境中的环境变量

说明

之前写的 Flask: 根据当前环境加载不同配置文件 有些笨重，接下来介绍一种通过加载配置文件（.env）到环境变量，再从环境变量中读取配置的方法，这种方式更加灵活：

安装依赖

首先需要安装 python-dotenv 库：

Copy
pip install python-dotenv

它的作用是从 .env 文件中读取键值对并将其设置为环境变量。

创建 settings.py

Copy
# settings.py

import os
from dotenv import load_dotenv

# 读取 .env 文件中的键值对，而后设置为环境变量
# 默认读取 .env 文件，当然也可以指定文件路径，参考：https://stackoverflow.com/a/41547163/7712266
load_dotenv()

class Settings:
SERVICE_NAME: str = os.getenv('SERVICE_NAME', 'service a')
DB_HOST:str = os.getenv('DB_HOST', 'localhost')

# 实例化一个单例，方便其它地方调用
settings = Settings()

创建 .env

接着创建 .env 文件来覆盖 Settings.py 类里面的属性值：

Copy
DB_HOST=dev://

python-dotenv 库默认查找的环境变量文件是 .env，当然也可以在调用 load_dotenv() 时手动指定文件路径

使用

使用方法如下：

Copy
from .settings import settings

# 方法一：通过 Settings 类的实例来访问配置
settings.DB_HOST

# 方法二：直接读取环境变量
os.getenv('DB_HOST', 'localhost')

参考