Comment définir et obtenir des variables d’environnement en Python

Pour définir et obtenir des variables d’environnement en Python, vous pouvez simplement utiliser le module os:

import os# Set environment variablesos.environ = 'username'os.environ = 'secret'# Get environment variablesUSER = os.getenv('API_USER')PASSWORD = os.environ.get('API_PASSWORD')# Getting non-existent keysFOO = os.getenv('FOO') # NoneBAR = os.environ.get('BAR') # NoneBAZ = os.environ # KeyError: key does not exist.

Notez que l’utilisation de getenv() ou de la méthode get() sur une clé de dictionnaire retournera None si la clé n’existe pas. Cependant, dans l’exemple avec BAZ, si vous faites référence à une clé dans un dictionnaire qui n’existe pas, cela lèvera un KeyError.

Les variables d’environnement sont utiles lorsque vous voulez éviter de coder en dur les identifiants d’accès ou d’autres variables dans le code. Par exemple, vous pouvez avoir besoin de passer des informations d’identification API pour un fournisseur de services de messagerie afin d’envoyer des notifications par e-mail, mais vous ne voudriez pas que ces informations d’identification soient stockées dans votre référentiel de code. Ou peut-être avez-vous besoin que votre code fonctionne de manière légèrement différente entre vos environnements de développement, de transit et de production. Dans ce cas, vous pouvez passer une variable d’environnement pour indiquer à votre application dans quel environnement elle s’exécute. Voici les cas d’utilisation typiques des variables d’environnement.

Stockage des variables d’environnement locales

Vous devriez écrire votre code Python de manière à ce qu’il soit capable d’accéder aux variables d’environnement à partir de n’importe quel environnement dans lequel il s’exécute. Il peut s’agir de votre environnement virtuel local que vous utilisez pour le développement ou d’un service sur lequel vous l’hébergez. Un paquet utile qui simplifie ce processus est Python Decouple, voici comment vous l’utiliseriez.

Installer d’abord Python Decouple dans votre environnement Python local.

$ pip install python-decouple

Une fois installé, créez un fichier .env à la racine de votre projet que vous pouvez ensuite ouvrir pour ajouter vos variables d’environnement.

$ touch .env # create a new .env file$ nano .env # open the .env file in the nano text editor

Vous pouvez ensuite ajouter vos variables d’environnement comme ceci :

USER=alexKEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf

Puis enregistrez (WriteOut) le fichier et quittez nano. Vos variables d’environnement sont maintenant stockées dans votre fichier .env. Si vous utilisez git, n’oubliez pas d’ajouter .env à votre fichier .gitignore afin de ne pas commettre ce fichier de secrets dans votre dépôt de code.

Maintenant que vous avez vos variables d’environnement stockées dans un fichier .env, vous pouvez y accéder dans votre code Python comme ceci:

from decouple import configAPI_USERNAME = config('USER')API_KEY = config('KEY')

L’avantage d’utiliser quelque chose comme l’approche ci-dessus est que lorsque vous déployez votre application vers un service en nuage, vous pouvez définir vos variables d’environnement en utilisant n’importe quelle méthode ou interface du fournisseur et votre code Python devrait toujours être capable d’y accéder. Notez qu’il est de convention courante d’utiliser des lettres majuscules pour les noms des constantes globales dans votre code.

La plupart des fournisseurs de services en nuage auront une CLI ou une interface Web qui vous permet de configurer les variables d’environnement pour vos environnements de staging ou de production. Pour obtenir des conseils dans ces cas, vous devrez vous référer à leur documentation sur la façon de définir les variables d’environnement lors de l’utilisation de leur service.

Joindre le réseau de développeurs Able

Si vous avez aimé ce post, vous pourriez être intéressé par le réseau de développeurs Able, un nouvel endroit où les développeurs peuvent bloguer et trouver des emplois.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.