说明#
之前写的 Flask: 根据当前环境加载不同配置文件 有些笨重,接下来介绍一种通过加载配置文件(.env)到环境变量,再从环境变量中读取配置的方法,这种方式更加灵活:
安装依赖#
首先需要安装 python-dotenv 库:
pip install python-dotenv
它的作用是从 .env 文件中读取键值对并将其设置为环境变量。
创建 settings.py#
# 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
类里面的属性值:
DB_HOST=dev://
python-dotenv
库默认查找的环境变量文件是 .env
,当然也可以在调用 load_dotenv()
时手动指定文件路径
使用#
使用方法如下:
from .settings import settings
# 方法一:通过 Settings 类的实例来访问配置
settings.DB_HOST
# 方法二:直接读取环境变量
os.getenv('DB_HOST', 'localhost')