Ceci est une ancienne révision du document !
Juste après la création de l'objet app, charger le contenu de l'un ou l'autre fichier .py en fonction de l'environnement :
app = Flask(__name__) if app.config['env'] == 'development': app.config.from_object('config_dev') if app.config['env'] == 'production': app.config.from_object('config_prod')
Les deux fichiers sont situés à la racine de l'application.
import os DEBUG = True BASE_DIR = os.path.abspath(os.path.dirname(__file__)) DBPATH = os.path.join(BASE_DIR, 'data/example.db') SECRET_KEY = "... clé secrète pour le développement ..."
import os DEBUG = False BASE_DIR = os.path.abspath(os.path.dirname(__file__)) DBPATH = '/var/data/production.db' SECRET_KEY = "... clé secrète pour la production ..."
Installer python-dotenv dans le Virtual Environment :
source venv/bin/activate (venv)$ pip install python-dotenv
Créer un fichier .env à la racine du projet :
/home/marc/flaskapp ├── app │ ├── __init__.py │ └── ... └── .env
Le fichier .env doit être dans le .gitignore sinon il sera publié sur GitHub en même temps que le code
FLASK_ENV=development PGUSER=marc PGPASSWORD=my_password
Flask va détecter la présence du fichier .env et charger certaines valeurs depuis celui-ci (par exemple FLASK_ENV).
Pour le reste, charger les variables d'environnement lors de l'initialisation de l'application :
import os from flask import Flask, ... from dotenv import load_dotenv ... app = Flask(__name__) base_dir = os.path.dirname(app.root_path) load_dotenv(os.path.join(base_dir, '.env'))
Ensuite il suffit de les utiliser dans le code de cette façon :
import os username = os.getenv('PGUSER') password = os.getenv('PGPASSWORD')
Voir la page Générer une Secret Key
Ceci sort la liste des valeurs vers la console:
for item in app.config.items(): print("%-30s => %s" % item)