dotenv可以從根據文件配置環境變量,然後flask再根據環境變量進行應用配置。
項目目錄:
./
├── Dockerfile
├── Pipfile
├── Pipfile.lock
├── README.md
├── app
│ ├── __init__.py
│ ├── setting.py # app.config
│ ├── models
│ │ ├── __init__.py
│ │ └── message.py
│ └── routes
│ ├── __init__.py
│ └── message.py
├── docker-local-entry.sh
├── .env # load_dotenv
├── gunicorn.conf.py
├── logging.conf
└── wsgi.py
.env
FLASK_ENV='development'
FLASK_DEBUG='True'
JWT_SECRET_KEY='yoursercretkey'
CORS_HEADERS='Content-Type'
/app/setting.py
from os import environ
JWT_SECRET_KEY=environ.get('JWT_SECRET_KEY')
CORS_HEADERS=environ.get('CORS_HEADERS')
簡化 /app/__init__.py
from dotenv import load_dotenv
from flask import Flask
app = Flask(__name__)
load_dotenv()
app.config.from_pyfile('setting.py')
print(app.config)
if __name__ == '__main__'
app.run(load_dotenv=True)
其實app實例的run方法也有一個load_dotenv屬性。
但是這個開啓後只能設置FLASK內置的環境變量(FLASK_開頭的變量)。如果FLASK_DEBUG='False',則無法對JWT_SECRET_KEY等自定義變量設置。如果FLASK_DEBUG='True',則可以對自定義環境變量進行應用設置。