{{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)]]