https://d226lax1qjow5r.cloudfront.net/blog/blogposts/python-environment-variables-env-vars-a-primer/python_environmental-variables_1200x600.png

Variables d'environnement Python (Env Vars) : Un abécédaire

Publié le November 7, 2023

Temps de lecture : 20 minutes

Cet article a été mis à jour le 10 août 2025.

Les développeurs Python traitent souvent des données qu'ils ne veulent pas que quelqu'un d'autre voie, comme les clés et les secrets d'API, les noms de bases de données, etc.

L'une des façons dont les programmeurs stockent ces secrets est dans les variables d'environnement. Dans cet article, vous apprendrez tout ce qu'il faut savoir sur l'utilisation des variables d'environnement en Python. Nous vous montrerons comment définir les variables d'environnement Python, comment les obtenir et les différentes façons de garder tous vos secrets en sécurité. Nous terminerons par un exemple concret de la façon dont nous les utilisons chez Vonage.

Vous préférez regarder plutôt que lire ? Consultez la version vidéo de ce tutoriel :

Que sont les variables d'environnement ?

Les variables d'environnement (souvent appelées "env vars") sont des variables que vous stockez en dehors de votre programme et qui peuvent affecter son fonctionnement. Par exemple, vous pouvez définir des variables d'environnement contenant la clé et le secret d'une API. Votre programme peut alors utiliser ces variables lorsqu'il se connecte à l'API.

Le fait de stocker vos secrets dans votre environnement plutôt que dans votre code source présente quelques avantages :

  • Sécurité: Les variables d'environnement vous aident à protéger les données sensibles telles que les clés API et les mots de passe. Par exemple, vous ne souhaitez pas que les personnes qui téléchargent votre code source aient accès à une clé d'API que vous utilisez.

  • Gestion de la configuration: Grâce aux variables d'environnement, il est facile de stocker et de gérer les paramètres de configuration.

  • Portabilité: Vous pouvez adapter les Applications à différents environnements sans modifier le code. Par exemple, si votre code se comporte différemment sur différents systèmes d'exploitation, vous pouvez utiliser une variable d'environnement pour gérer cela.

  • Test et débogage: Les développeurs peuvent simplifier les tests et le débogage en ajustant les variables d'environnement plutôt qu'en modifiant le code.

Par essence, les variables d'environnement vous permettent de modifier le comportement de votre programme sans modifier le programme lui-même.

Vous pouvez stocker des variables d'environnement dans votre système d'exploitation, mais les autres méthodes que nous allons aborder sont plus courantes dans les scénarios du monde réel ; par exemple, lors de l'envoi de messages d'images RCS avec Python. l'envoi de messages d'images RCS avec Python.

Conditions préalables

  • Avant de commencer, assurez-vous que vous disposez des éléments suivants :

    • Python est installé sur votre machine

    • Un compte API Vonage

    • Un numéro virtuel Vonage

    • Un éditeur de texte comme Visual Studio Code

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Comment utiliser les variables d'environnement en Python

Vous obtenez et définissez des variables d'environnement en Python à l'aide de la fonction intégré os intégré.

Comment obtenir les variables d'environnement de Python

Pour accéder au module os créons un fichier Python à partir de la ligne de commande :

touch env-testing.py

Vous pouvez visualiser toutes les variables d'environnement de votre programme en enregistrant le code suivant dans un fichier Python, puis en exécutant ce programme Python :

Ouvrez maintenant le fichier env-testing.py avec votre éditeur de texte et ajoutez le code suivant :

import os

os.environ

print(os.environ)

Votre interpréteur Python devrait imprimer toutes les variables d'environnement de votre système d'exploitation lorsque vous exécutez ce code à partir de la ligne de commande :

python3 env-testing.py

Vous pouvez accéder aux différentes variables d'environnement dans os.environ comme un dictionnaire Python. Voici deux façons d'obtenir des variables d'environnement avec Python :

import os

os.environ['USER']
os.environ.get('USER')

Les deux dernières lignes de votre code Python ci-dessus font la même chose : elles récupèrent toutes deux la variable d'environnement USER de votre système d'exploitation. Cependant, lorsque vous utilisez la première méthode, Python lève une exception s'il ne trouve pas la variable.

Une bonne pratique consiste à utiliser os.environ['MY_ENVIRONMENT_VARIABLE'] si la variable d'environnement est nécessaire à l'exécution de votre application Python et os.environ.get('MY_ENVIRONMENT_VARIABLE') si elle est facultative.

Vous pouvez également utiliser os.getenv() comme alternative à os.environ.get(). Les deux fonctionnent de la même manière et renvoient None si la variable n'est pas définie, mais os.getenv() peut être un peu plus concis. Par exemple :

import os
api_key = os.getenv("MY_API_KEY")

Que vous choisissiez os.getenv() ou os.environ.get() dépend essentiellement des préférences et de la lisibilité.

Comment définir les variables d'environnement

Pour définir des variables d'environnement en Python, vous pouvez les ajouter à l'objet os.environ comme vous le feriez avec un dictionnaire. Cependant, seules les chaînes de caractères sont autorisées, car elles sont transmises directement au shell dans lequel tourne votre interpréteur.

os.environ['USER'] = 'New User'

Pour mettre à jour une variable d'environnement, il suffit de la remplacer de la même manière :

os.environ['USER'] = 'Modified User'

Comment stocker les variables d'environnement Python (5 méthodes)

Il existe différentes raisons de stocker des variables d'environnement, et donc différentes manières de les stocker. Parfois, vous avez simplement besoin de définir quelque chose sur votre machine locale, alors que dans d'autres cas, vous pouvez avoir besoin d'exécuter votre application en production - ces cas d'utilisation requièrent des approches différentes !

Nous vous présentons ci-dessous cinq façons de stocker des variables d'environnement pour Python :

  1. Système d'exploitation Stockage

  2. Stockage de fichiers

  3. Stockage en nuage

  4. Gestionnaire universel de secrets Stockage

  5. Stockage du système CI/CD

Stocker les variables d'environnement sur votre système d'exploitation

Parfois, il n'est pas nécessaire de créer une variable d'environnement via Python si l'on veut juste définir quelque chose rapidement. Heureusement, cela peut se faire en ligne de commande. Les exemples que je vais donner ici fonctionnent pour les systèmes de type Unix (Mac, Linux, etc.). Tutoriel sur les variables d'environnement Windows.

Dans l'exemple précédent, USER était une variable d'environnement définie par votre système d'exploitation, représentant la personne qui utilise votre ordinateur. Bien que votre système d'exploitation crée cette variable automatiquement, vous pouvez également créer vos propres variables d'environnement.

Vous pouvez voir toutes les variables d'environnement à partir de votre ligne de commande en ouvrant une ligne de commande et en tapant ce qui suit (sur un système de type Unix) :

export

Cette commande env répertorie toutes les variables disponibles dans votre shell.

Voici comment créer une variable d'environnement sur votre ligne de commande en utilisant la syntaxe de la variable d'exportation :

export VONAGE_API=your_api

Cette opération crée une variable appelée VONAGE_API et fixe sa valeur à your_api. Vous pouvez imprimer la valeur de n'importe quelle variable comme ceci :

echo $VONAGE_API

Lorsque vous exécutez le code ci-dessus, vous obtenez comme résultat your_api en sortie.

Stocker les variables d'environnement dans des fichiers

Lorsque vous créez une nouvelle variable d'environnement à l'aide de votre terminal/ligne de commande, elle n'existe que pour cette session. Lorsque vous fermez votre terminal, la variable d'environnement n'existe plus. Souvent, lorsque vous programmez, vous souhaitez que vos variables d'environnement persistent afin qu'elles puissent être utilisées à chaque fois que vous exécutez votre code.

L'une des façons de conserver les variables d'environnement est d'utiliser des fichiers env ; il s'agit de simples fichiers texte (souvent nommés .env) qui stockent des paires clé-valeur. Cela facilite le partage de la configuration entre les environnements ou les membres d'une équipe.

Créons un projet d'exemple pour montrer comment utiliser un fichier .env pour stocker des variables d'environnement.

Tout d'abord, utilisez votre terminal pour créer un nouveau dossier pour ce tutoriel, déplacez-vous dans ce dossier et créez un fichier .env à l'intérieur :

mkdir env_variables_tutorial cd env_variables_tutorial touch .env

Ajoutez cette ligne à votre fichier .env fichier :

VONAGE_API=your_api

python3 -m venv venv . ./venv/bin/activate

Maintenant que nous sommes dans un environnement virtuel Python, nous pouvons installer le paquetage dont nous avons besoin.

pip install python-dotenv

Nous pouvons maintenant utiliser le module dotenv de ce paquetage pour charger les variables d'environnement du fichier .env dans l'environnement auquel Python peut accéder avec le module os à l'environnement auquel Python peut accéder. Créez un fichier Python avec le contenu suivant :

from dotenv import load_dotenv
import os

load_dotenv()  # This line brings all environment variables from .env into os.environ
print(os.environ['VONAGE_API'])

La fonction load_dotenv introduit les variables d'environnement du fichier .env dans le fichier os.environqui peuvent alors être utilisées comme n'importe quelle autre variable d'environnement définie par votre système d'exploitation.

Comment stocker des variables d'environnement dans le nuage

Lorsque vous créez un logiciel pour la production, vous ne l'exécuterez probablement pas depuis votre ordinateur. Au lieu de cela, vous exécuterez très probablement votre code sur un serveur.

Cela signifie que vous devez savoir comment définir et obtenir des variables d'environnement, quel que soit l'endroit où vous exécutez votre code en production.

Voici une liste de fournisseurs de nuages et d'endroits où vous pouvez obtenir plus d'informations sur la gestion des variables d'environnement en les utilisant :

Stocker les variables d'environnement dans les systèmes CI/CD

Si vous utilisez des systèmes CI/CD basés sur le cloud, tels que GitHub Actions, CircleCI, Travis ou Jenkins, vous pouvez également stocker des variables d'environnement dans leurs systèmes.

Si vous utilisez GitHub pour votre projet, vous pouvez stocker des variables d'environnement dans les paramètres de votre dépôt en naviguant vers l'onglet "Paramètres" et en définissant les clés API, etc. dans le paramètre "Secrets et variables" sous "Sécurité".

Screenshot of the Secrets and Variables menu in GitHub settings. The item labeled Actions is selected.

Ici, vous pouvez créer un nouveau secret de dépôt en cliquant sur l'option et en définissant des valeurs. Ce secret sera désormais disponible dans vos actions GitHub.

Screenshot of the Actions secrets New secret page. VONAGE_API_SECRET is entered as the Name, and my-secret-api-key-to-use-vonage-applications is entered as the Secret.

Il y a beaucoup d'informations sur la mise en place de variables d'environnement avec GitHub Actionsainsi que CircleCI, Travis et Jenkinsainsi que des informations pour d'autres fournisseurs.

Stocker les variables d'environnement à l'aide d'un gestionnaire de secrets universel

Stocker vos secrets dans un fichier .env permet de conserver les variables d'environnement, mais pose quelques problèmes.

Par exemple, imaginons que vous fassiez partie d'une équipe de dix personnes. Chacun suit ses secrets dans des fichiers .env et que l'un des secrets change (par exemple, vous obtenez une nouvelle clé API). Dans ce cas, les dix personnes doivent toutes mettre à jour leur fichier, ce qui n'est pas très efficace. .env ce qui n'est pas très efficace.

Et si vous décidez de passer de Heroku à AWS ? Dans ce cas, vous devrez apprendre à gérer les secrets sur une nouvelle plateforme, ce qui nécessite un travail supplémentaire.

Pour résoudre ces problèmes, certains programmeurs utilisent un gestionnaire de secrets universel comme Doppler. Un gestionnaire de secrets universel vous permet de stocker vos secrets en un seul endroit, afin que tous les membres de votre équipe puissent y accéder.

Screenshot of multiple secrets managed in Doppler.

Avec un gestionnaire de secrets universel, vos secrets sont indépendants de votre machine locale ou d'un fournisseur de cloud, de sorte que vous pouvez les emporter avec vous quel que soit l'endroit où vous exécutez votre code.

Bonus : Utilisation de variables d'environnement avec des API externes

Parfois, si vous utilisez un exemple de projet ou des extraits de code d'une API externe, l'outil est fourni par le propriétaire/mainteneur pour en faciliter l'utilisation. Souvent, vous devrez utiliser des variables d'environnement pour configurer l'outil de manière optimale.

Chez Vonage, nous utilisons des variables d'environnement dans nos échantillons de code Python pour envoyer des SMS, passer des appels téléphoniques, envoyer des codes de vérification, vérifier les scores de fraude, et bien plus encore.

Supposons que vous souhaitiez utiliser Number Insight API de Vonage de Vonage pour obtenir des informations sur certains numéros de téléphone. Dans ce cas, vous pouvez utiliser un exemple de code comme celui-ci pour obtenir rapidement des résultats en Python.

Pour utiliser cet exemple de code, il faut d'abord créer un Account Vonage (ne vous inquiétez pas, c'est gratuit !) pour obtenir une clé API et un secret pour authentifier vos appels API.

Ensuite, clonez le GitHub. Une fois cela fait, créez un nouvel environnement virtuel Python et installez les dépendances nécessaires :

deactivate # if the virtual environment from earlier is still active python3 -m venv venv . ./venv/bin/activate pip install -r requirements.txt

Enfin, renommez le fichier .env.dist en .env et ajoutez votre clé et votre secret API au fichier, ainsi que la valeur de INSIGHT_NUMBER pour qu'elle corresponde au numéro que vous souhaitez consulter. Vous êtes maintenant prêt à exécuter le code :

python number-insight/ni-basic.py

Vous devriez voir des informations sur le numéro de téléphone que vous avez saisi, ce qui signifie que vous avez utilisé l'API Number Insight API de Vonage pour rechercher le numéro de téléphone à partir de vos variables d'environnement, sans avoir besoin de modifier le fichier Python lui-même ! Il s'agit là d'un avantage majeur de l'utilisation des variables d'environnement.

Réflexions finales

Obtenir et définir des variables d'environnement est une partie essentielle de la création d'un logiciel de production. Si vous avez terminé ce tutoriel, vous savez maintenant comment obtenir et définir des variables d'environnement à l'aide de Python.

Vous comprenez également maintenant les différentes options qui s'offrent à vous pour stocker vos secrets : les définir temporairement à l'aide de votre système d'exploitation, les stocker dans un fichier .env, les conserver dans le nuage et utiliser un gestionnaire de secrets universel. La méthode que vous utiliserez dépendra des circonstances du projet sur lequel vous travaillez. Si vous voulez en savoir plus, cet article sur l'utilisation de clés privées dans les variables d'environnement contient plus d'informations.

Vous avez une question ou souhaitez partager ce que vous construisez ?

Restez connecté et tenez-vous au courant des dernières nouvelles, astuces et événements concernant les développeurs.

Maintenant, allez-y et essayez d'utiliser les variables d'environnement dans vos propres projets Python !

Partager:

https://a.storyblok.com/f/270183/400x400/92109caf6a/max-kahan.png
Max KahanVonage Ancien membre de l'équipe

Max est un défenseur des développeurs Python et un ingénieur logiciel qui s'intéresse aux API de communication, à l'apprentissage automatique, à l'expérience des développeurs et à la danse ! Il a suivi une formation en physique, mais il travaille désormais sur des projets open-source et fabrique des objets qui améliorent la vie des développeurs.