myesn

myEsn2E9

hi
github

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

说明#

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

参考#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。