Utilisez pydantic lors de la lecture des variables d'environnement en Python

Lors de l'implémentation d'une application, la gestion des variables d'environnement est un peu gênante, n'est-ce pas?

Lors de l'implémentation en Python, vous pouvez utiliser une bibliothèque appelée pydantic pour définir les valeurs par défaut, transtyper en type int ou définir des valeurs à partir de .env. Vous pouvez facilement implémenter un traitement tel que la lecture. Dans cet article, je présenterai ces exemples de codes.

Soit dit en passant, pydantic n'est pas une bibliothèque qui lit uniquement les variables d'environnement, mais une bibliothèque qui vous permet de définir des classes à l'aide d'annotations de type. Par exemple, vous pouvez convertir et valider des données au format json en classes. Si vous souhaitez en savoir plus sur les autres fonctionnalités, veuillez lire l'article suivant.

Introduction à Pydantic

Lire les variables d'environnement

Supposons que les variables d'environnement suivantes soient définies:

#format bash
export REDIS_HOST_NAME=localhost
export REDIS_PORT=6379

Si vous utilisez pydantic, vous pouvez le lire avec le code suivant.

from pydantic import BaseSettings

class Settings(BaseSettings):
    redis_host_name: str
    redis_port: int

settings = Settings()
 
print(settings.redis_host_name)
# => localhost
print(settings.redis_port)
# => 6379
print(type(settings.redis_port))
# => <class 'int'>

Si la variable d'environnement n'est pas définie ou si le transtypage échoue, une erreur de validation sera émise.

pydantic.error_wrappers.ValidationError: 1 validation error for Settings
redis_port
  value is not a valid integer (type=type_error.integer)

Utilisez dotenv

Pendant le développement, vous pouvez utiliser un format de fichier appelé .env pour simplifier la définition des variables d'environnement. Ceci est un article sur node.js, mais je pense que c'est facile à comprendre.

Utilisez le fichier .env au lieu de la variable d'environnement (dotenv)

Tout d'abord, vous devez également installer python-dotenv avec pip install python-dotenv ou pip install pydantic [dotenv].

Étant donné le fichier .env suivant

.env


REDIS_HOST_NAME=localhost
REDIS_PORT=6379

Vous pouvez le charger avec un code comme celui-ci:

from pydantic import BaseSettings

class Settings(BaseSettings):
    redis_host_name: str
    redis_port: int

    class Config:
        env_file = '.env'

settings = Settings()

Fonctions plus détaillées

Avec cela, je pense que nous avons introduit des fonctions utiles liées aux variables d'environnement qui sont souvent utilisées dans le développement quotidien. Si vous souhaitez en savoir plus, veuillez lire l'article correspondant dans le document officiel.

Settings management - pydantic

Recommended Posts

Utilisez pydantic lors de la lecture des variables d'environnement en Python
Utilisez os.getenv pour obtenir des variables d'environnement en Python
Gérer les variables d'environnement en Python
[Python] Utiliser et et ou lors de la création de variables
Pour référencer des variables d'environnement en Python dans Blender
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Utilisez config.ini avec Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utilisez Python dans votre environnement depuis Win Automation
environnement virtuel en Python
Utiliser jupyter-lab installé dans l'environnement virtuel python (venv)
Utiliser Python dans un environnement Anaconda avec VS Code
[Question] Que se passe-t-il si vous utilisez% en python?
Obtenez des variables d'environnement en Python, sinon définissez les valeurs par défaut
Utilisez CASA Toolkit dans votre propre environnement Python
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Variables d'environnement lors de l'utilisation de Tkinter
Utiliser l'expression let en Python
Utiliser Anaconda dans un environnement pyenv
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Utiliser Random Forest avec Python
Variables d'environnement HTTP dans Flask
Utilisez Spyder de Python IDE
Attention lorsque os.mkdir en Python
Utilisez le tissu tel quel en python (fabric3)
Les mines terrestres cachées dans les variables de classe Python
Comportement lors de la liste dans Python heapq
Installer Scrapy dans l'environnement Python Anaconda
Comment utiliser SQLite en Python
Lors de la lecture d'une structure C ++ avec Cython
Utiliser rospy avec virtualenv dans Python3
Utilisation de variables globales dans les fonctions python
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Utilisez django-debug-toolbar dans l'environnement VirtualBox / Vagrant
Lire et écrire du texte en Python
Utilisez gcc-4.2 lors de la compilation de Python (MacOS)
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
Comment utiliser les variables d'environnement Serverless Framework et Python et gérer les étapes
Installer Networkx dans l'environnement Python 3.7 pour une utilisation dans les livres de science des données sur les logiciels malveillants
Lors de la spécification de plusieurs clés dans le tri python
[Python3] Définir dynamiquement des variables globales dans une fonction
[Introduction à Python] Comment utiliser la classe en Python?
Utiliser l'impression dans l'expression lambda Python2
Utilisez tensorflow dans un environnement sans racine
Méthode pour créer un environnement Python dans Xcode 6
Utilisez smbus avec python3 sous environnement pyenv
Comment définir dynamiquement des variables en Python
Utilisation de venv dans un environnement Windows + Docker [Python]