Configurer les variables d'environnement Python

3 min de lecture07 novembre 2026

Les variables d'environnement séparent la configuration du code : le même programme tourne en local, en test et en production avec des valeurs différentes, sans modification ni secret dans le dépôt. Sur l'hébergement d'applications, elles se définissent dans le panneau et sont injectées au démarrage du processus.

Lire une variable

Python
import os

token = os.environ["DISCORD_TOKEN"]
port = int(os.environ.get("PORT", "8000"))
debug = os.environ.get("DEBUG", "false").lower() == "true"

os.environ["X"] lève KeyError si la variable manque : c'est souvent souhaitable pour un secret obligatoire, à condition d'afficher un message clair. os.environ.get("X", "defaut") fournit une valeur de repli. Convertissez explicitement les entiers et les booléens ; une chaîne "false" est vraie en Python si vous la testez directement.

Ne mettez jamais de secret comme valeur par défaut dans le code. Un jeton écrit en dur finit dans Git, dans une archive ou dans une capture d'écran.

Panneau et fichier .env local

Dans le panneau, les variables sont associées au service et appliquées au redémarrage. Modifier une valeur ne change pas le processus en cours.

En local, utilisez un fichier .env non versionné :

Texte
DISCORD_TOKEN=votre-jeton-local
DATABASE_URL=postgresql://utilisateur:mot-de-passe@localhost:5432/base
DEBUG=true

Avec python-dotenv, chargez-le uniquement en développement :

Python
from dotenv import load_dotenv
load_dotenv()

Par défaut, load_dotenv ne remplace pas une variable déjà présente : en production, les valeurs du panneau restent prioritaires. Ne commitez pas .env ; versionnez un .env.example avec les noms et des valeurs vides.

Rotation des secrets

Un secret doit pouvoir changer sans redéploiement de code. Pour un jeton Discord, créez-en un nouveau dans le portail, mettez à jour la variable, redémarrez, vérifiez la connexion, puis révoquez l'ancien. Pour une base, créez un utilisateur ou un mot de passe de remplacement, testez, puis retirez l'ancien accès.

Si un secret a fuité dans Git, le supprimer du dernier commit ne suffit pas : il reste dans l'historique et dans les clones. Considérez-le comme compromis et révoquez-le.

Moindre privilège et journalisation

  • Un secret par service, pas un jeton partagé entre plusieurs applications.
  • Droits minimaux pour l'utilisateur de base.
  • Aucune variable sensible dans les journaux ni dans une réponse HTTP.
  • Accès au panneau protégé par un mot de passe fort et la double authentification quand elle est disponible.

Vérifier

Après un changement, redémarrez et confirmez dans le journal que la configuration est chargée sans afficher les valeurs. Testez la fonction qui dépend du secret (connexion au bot, requête à la base). Retirez temporairement une variable en environnement de test pour vérifier que l'échec est explicite et non silencieux.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi