xChar
·6 months ago

说明

之前写的 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')

参考

Loading comments...