說明#
之前寫的 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')