{{tag>dev python variable environnement}}
====== Python : Gestion des variables d'environnement ======
Plusieurs solutions pour définir des variables d'environnement en Python :
- Créer un fichier .env ;
- Éditer le fichier ''activate'' de l'environnement virtuel Python ;
- Utiliser le Dockerfile si le projet s'appuie sur Docker.
===== Le fichier .env =====
Ajouter un fichier .env à la racine du projet :
# Environnement
# Paquetage flask
FLASK_APP="gcomp"
Pour que les fichiers .env soient chargés, le paquetage **python-dotenv** doit être installé.
===== Édition du script activate =====
Insérer l'export après la modification du PATH dans le fichier ''./bin/activate'' de l'environnement virtuel du projet :
...
48
49 _OLD_VIRTUAL_PATH="$PATH"
50 PATH="$VIRTUAL_ENV/"bin":$PATH"
51 export PATH
52
53 export FLASK_APP="gcomp"
...
Éditer également la fonction ''deactivate'' en début de fichier pour retirer la variable de l'environnement lorsque l'environnement virtuel est déchargé :
1 # This file must be used with "source bin/activate" *from bash*
2 # You cannot run it directly
3
4 deactivate () {
5 # reset old environment variables
6 unset FLASK_APP
7 if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then
...
Vérifier le bon comportement du script à l'activation puis à la désactivation de l’environnement virtuel Python :
# La variable est absente de l’environnement utilisateur initial
printenv FLASK_APP
# On charge le venv, la variable doit exister
source .venv/bin/activate
printenv FLASK_APP
# On décharge le venv, la variable ne doit plus exister
deactivate
printenv FLASK_APP
Cette solution reste locale. En cas de déploiement sur une autre machine, en général l'environnement virtuel est recréé.
===== Utiliser le Dockerfile =====
Si Docker est utilisé comme outils de déploiement du projet, les variables d'environnement peuvent être définies dans le Dockerfile. Notons que ces variables persisteront à l'exécution du conteneur
#Dockerfile
FROM an_image
...
ENV FLASK_APP="gcomp"
===== Accéder aux variables d'environnement =====
Depuis le script / module Python, on accède aux variables d'environnement via le module **os**
import os
os.environ['FLASK_APP']
===== Références =====
* [[https://medium.com/@dataproducts/python-three-different-ways-to-store-environment-variables-15224952f31b|3 manières de conserver des variables d'environnement en Python (medium.com)]]
* [[https://codingnomads.com/python-create-venv-environment-variables|Ajouter des variables d'environnement au venv Python (codingnomads.com)]]