fastapi/docs/fr/docs/environment-variables.md

9.3 KiB

Variables d'environnement

/// tip | Astuce

Si vous savez déjà ce que sont les « variables d'environnement » et comment les utiliser, vous pouvez passer cette section.

///

Une variable d'environnement (également appelée « env var ») est une variable qui vit en dehors du code Python, dans le système d'exploitation, et qui peut être lue par votre code Python (ou par d'autres programmes également).

Les variables d'environnement peuvent être utiles pour gérer des paramètres d'application, dans le cadre de l'installation de Python, etc.

Créer et utiliser des variables d'environnement

Vous pouvez créer et utiliser des variables d'environnement dans le shell (terminal), sans avoir besoin de Python :

//// tab | Linux, macOS, Windows Bash

// Vous pouvez créer une variable d'environnement MY_NAME avec
$ export MY_NAME="Wade Wilson"

// Vous pouvez ensuite l'utiliser avec d'autres programmes, par exemple
$ echo "Hello $MY_NAME"

Hello Wade Wilson

////

//// tab | Windows PowerShell

// Créer une variable d'environnement MY_NAME
$ $Env:MY_NAME = "Wade Wilson"

// L'utiliser avec d'autres programmes, par exemple
$ echo "Hello $Env:MY_NAME"

Hello Wade Wilson

////

Lire des variables d'environnement en Python

Vous pouvez également créer des variables d'environnement en dehors de Python, dans le terminal (ou par tout autre moyen), puis les lire en Python.

Par exemple, vous pouvez avoir un fichier main.py contenant :

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

/// tip | Astuce

Le deuxième argument de os.getenv() est la valeur par défaut à retourner.

S'il n'est pas fourni, c'est None par défaut ; ici, nous fournissons "World" comme valeur par défaut à utiliser.

///

Vous pouvez ensuite exécuter ce programme Python :

//// tab | Linux, macOS, Windows Bash

// Ici, nous ne définissons pas encore la variable d'environnement
$ python main.py

// Comme nous ne l'avons pas définie, nous obtenons la valeur par défaut

Hello World from Python

// Mais si nous créons d'abord une variable d'environnement
$ export MY_NAME="Wade Wilson"

// Puis que nous relançons le programme
$ python main.py

// Il peut maintenant lire la variable d'environnement

Hello Wade Wilson from Python

////

//// tab | Windows PowerShell

// Ici, nous ne définissons pas encore la variable d'environnement
$ python main.py

// Comme nous ne l'avons pas définie, nous obtenons la valeur par défaut

Hello World from Python

// Mais si nous créons d'abord une variable d'environnement
$ $Env:MY_NAME = "Wade Wilson"

// Puis que nous relançons le programme
$ python main.py

// Il peut maintenant lire la variable d'environnement

Hello Wade Wilson from Python

////

Comme les variables d'environnement peuvent être définies en dehors du code, mais lues par le code, et qu'elles n'ont pas besoin d'être stockées (validées dans git) avec le reste des fichiers, il est courant de les utiliser pour les configurations ou les paramètres.

Vous pouvez également créer une variable d'environnement uniquement pour l'invocation d'un programme spécifique, qui ne sera disponible que pour ce programme et uniquement pendant sa durée d'exécution.

Pour cela, créez-la juste avant le programme, sur la même ligne :

// Créer en ligne une variable d'environnement MY_NAME pour cet appel de programme
$ MY_NAME="Wade Wilson" python main.py

// Il peut maintenant lire la variable d'environnement

Hello Wade Wilson from Python

// La variable d'environnement n'existe plus ensuite
$ python main.py

Hello World from Python

/// tip | Astuce

Vous pouvez en lire davantage sur The Twelve-Factor App : Config.

///

Gérer les types et la validation

Ces variables d'environnement ne peuvent gérer que des chaînes de texte, car elles sont externes à Python et doivent être compatibles avec les autres programmes et le reste du système (et même avec différents systèmes d'exploitation, comme Linux, Windows, macOS).

Cela signifie que toute valeur lue en Python à partir d'une variable d'environnement sera une str, et que toute conversion vers un autre type ou toute validation doit être effectuée dans le code.

Vous en apprendrez davantage sur l'utilisation des variables d'environnement pour gérer les paramètres d'application dans le Guide utilisateur avancé - Paramètres et variables d'environnement{.internal-link target=_blank}.

Variable d'environnement PATH

Il existe une variable d'environnement spéciale appelée PATH qui est utilisée par les systèmes d'exploitation (Linux, macOS, Windows) pour trouver les programmes à exécuter.

La valeur de la variable PATH est une longue chaîne composée de répertoires séparés par deux-points : sous Linux et macOS, et par point-virgule ; sous Windows.

Par exemple, la variable d'environnement PATH peut ressembler à ceci :

//// tab | Linux, macOS

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Cela signifie que le système doit rechercher les programmes dans les répertoires :

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin

////

//// tab | Windows

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

Cela signifie que le système doit rechercher les programmes dans les répertoires :

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

////

Lorsque vous tapez une commande dans le terminal, le système d'exploitation cherche le programme dans chacun de ces répertoires listés dans la variable d'environnement PATH.

Par exemple, lorsque vous tapez python dans le terminal, le système d'exploitation cherche un programme nommé python dans le premier répertoire de cette liste.

S'il le trouve, alors il l'utilise. Sinon, il continue à chercher dans les autres répertoires.

Installer Python et mettre à jour PATH

Lorsque vous installez Python, il est possible que l'on vous demande si vous souhaitez mettre à jour la variable d'environnement PATH.

//// tab | Linux, macOS

Supposons que vous installiez Python et qu'il se retrouve dans un répertoire /opt/custompython/bin.

Si vous acceptez de mettre à jour la variable d'environnement PATH, l'installateur ajoutera /opt/custompython/bin à la variable d'environnement PATH.

Cela pourrait ressembler à ceci :

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

Ainsi, lorsque vous tapez python dans le terminal, le système trouvera le programme Python dans /opt/custompython/bin (le dernier répertoire) et utilisera celui-là.

////

//// tab | Windows

Supposons que vous installiez Python et qu'il se retrouve dans un répertoire C:\opt\custompython\bin.

Si vous acceptez de mettre à jour la variable d'environnement PATH, l'installateur ajoutera C:\opt\custompython\bin à la variable d'environnement PATH.

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

Ainsi, lorsque vous tapez python dans le terminal, le système trouvera le programme Python dans C:\opt\custompython\bin (le dernier répertoire) et utilisera celui-là.

////

Ainsi, si vous tapez :

$ python

//// tab | Linux, macOS

Le système va trouver le programme python dans /opt/custompython/bin et l'exécuter.

Cela reviendrait à peu près à taper :

$ /opt/custompython/bin/python

////

//// tab | Windows

Le système va trouver le programme python dans C:\opt\custompython\bin\python et l'exécuter.

Cela reviendrait à peu près à taper :

$ C:\opt\custompython\bin\python

////

Ces informations vous seront utiles lors de l'apprentissage des Environnements virtuels{.internal-link target=_blank}.

Conclusion

Avec cela, vous devriez avoir une compréhension de base de ce que sont les variables d'environnement et de la façon de les utiliser en Python.

Vous pouvez également en lire davantage sur la page Wikipédia dédiée aux variables d'environnement.

Dans de nombreux cas, il n'est pas évident de voir immédiatement en quoi les variables d'environnement seraient utiles et applicables. Mais elles réapparaissent dans de nombreux scénarios lorsque vous développez, il est donc bon de les connaître.

Par exemple, vous aurez besoin de ces informations dans la section suivante, sur les Environnements virtuels.