Einführung
Entwickler arbeiten an Anwendungen, die auf einem Server bereitgestellt werden sollen, damit jeder diese verwenden kann. In der Regel richten Entwickler in der Maschine, in der diese Apps leben, Umgebungsvariablen ein, die es der App ermöglichen, auszuführen. Diese Variablen können API -Schlüssel von externen Diensten, URL Ihrer Datenbank und vielem mehr sein.
Für die lokale Entwicklung ist es jedoch wirklich unpraktisch, diese Variablen auf der Maschine zu deklarieren, da es sich um einen langsamen und chaotischen Prozess handelt. Ich möchte additionally dieses kurze Tutorial wie man verwenden Pydantisch Um Umgebungsvariablen auf sichere Weise zu bewältigen.
.Env -Datei
Was Sie häufig in einem tun Python Projekt besteht darin, alle Ihre Umgebungsvariablen in einer Datei mit dem Namen .Env zu speichern. Dies ist eine Textdatei, die alle Variablen in a enthält key : worth
Format. Sie können auch den Wert einer der Variablen verwenden, um eine der anderen Variablen zu deklarieren, indem Sie die nutzen {}
Syntax.
Das Folgende ist ein Beispiel:
#.env file
OPENAI_API_KEY="sk-your non-public key"
OPENAI_MODEL_ID="gpt-4o-mini"
# Improvement settings
DOMAIN=instance.org
ADMIN_EMAIL=admin@${DOMAIN}
WANDB_API_KEY="your-private-key"
WANDB_PROJECT="myproject"
WANDB_ENTITY="my-entity"
SERPAPI_KEY= "your-api-key"
PERPLEXITY_TOKEN = "your-api-token"
Beachten Sie, dass die Datei .Env privat bleiben sollte. Daher ist es wichtig, dass diese Datei in Ihrem erwähnt wird .Gitignore Datei, um sicherzugehen, dass Sie Schieben Sie es niemals auf GithubAndernfalls könnten andere Entwickler Ihre Schlüssel stehlen und die Instruments verwenden, für die Sie bezahlt haben.
env.instance -Datei
Um das Leben von Entwicklern zu erleichtern, die Ihr Repository klonen, können Sie eine Env. -Beispieldatei in Ihr Projekt aufnehmen. Dies ist eine Datei, die nur die Schlüssel dessen enthält, was in die .Env -Datei gehen soll. Auf diese Weise wissen andere Menschen, welche APIs, Token oder Geheimnisse im Allgemeinen festlegen müssen, damit die Skripte funktionieren.
#env.instance
OPENAI_API_KEY=""
OPENAI_MODEL_ID=""
DOMAIN=""
ADMIN_EMAIL=""
WANDB_API_KEY=""
WANDB_PROJECT=""
WANDB_ENTITY=""
SERPAPI_KEY= ""
PERPLEXITY_TOKEN = ""
Python-dotenv ist die Bibliothek, mit der Sie die in die .Env-Datei deklarierten Variablen laden. So installieren Sie diese Bibliothek:
pip set up python-dotenv
Jetzt können Sie mit dem Load_Dotenv die Variablen laden. Erhalten Sie dann einen Verweis auf diese Variablen mit dem Betriebssystemmodul.
import os
from dotenv import load_dotenv
load_dotenv()
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
OPENAI_MODEL_ID = os.getenv('OPENAI_MODEL_ID')
Diese Methode untersucht zunächst in Ihre .EnV -Datei, um die von Ihnen dort deklarierten Variablen zu laden. Wenn diese Datei nicht vorhanden ist, wird die Variable aus dem Host -Laptop entnommen. Dies bedeutet, dass Sie die .Env -Datei für Ihre lokale Entwicklung verwenden können. Wenn der Code dann in einer Hostumgebung wie einem virtuellen Laptop oder einem Docker -Container bereitgestellt wird, werden wir die in der Hostumgebung definierten Umgebungsvariablen direkt verwenden.
Pydantisch
Pydantic ist eine der am häufigsten verwendeten Bibliotheken in Python zur Datenvalidierung. Es wird auch zum Serialisieren und Deserialisieren von Klassen in JSON und Rücken verwendet. Es generiert automatisch ein JSON -Schema und verringert die Notwendigkeit des manuellen Schemasmanagements. Es bietet auch eine integrierte Datenvalidierung, um sicherzustellen, dass die serialisierten Daten das erwartete Format anhalten. Zuletzt integriert es sich leicht in beliebte Webrahmen wie Fastapi.
Pydantic-Settings ist eine pydantische Funktion, die zum Laden und Validieren von Einstellungen oder Konfigurationsklassen aus Umgebungsvariablen erforderlich ist.
!pip set up pydantic-settings
Wir werden eine Klasse namens erstellen Settings
. Diese Klasse wird erben BaseSettings
. Dies macht das Standardverhalten der Bestimmung der Werte aller Felder aus der .Env -Datei. Wenn in der .Env -Datei kein VAR gefunden wird, wird der Standardwert verwendet, falls angegeben.
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import (
AliasChoices,
Area,
RedisDsn,
)
class Settings(BaseSettings):
auth_key: str = Area(validation_alias="my_auth_key")
api_key: str = Area(alias="my_api_key")
redis_dsn: RedisDsn = Area(
'redis://consumer:cross@localhost:6379/1', #default worth
validation_alias=AliasChoices('service_redis_dsn', 'redis_url'),
)
model_config = SettingsConfigDict(env_prefix='my_prefix_')
Im Settings
Klasse oben haben wir mehrere Felder definiert. Der Area
Klasse wird verwendet, um bereitzustellen zusätzliche Informationen über ein Attribut.
In unserem Fall haben wir a eingerichtet validation_alias
. Der in der .Env -Datei zu suchen, nach dem variablen Namen zu suchen, wird additionally überschrieben. In dem oben angegebenen Fall die Umgebungsvariable my_auth_key wird gelesen anstelle von auth_key.
Sie können auch mehrere Aliase haben AliasChoises(choise1, choise2).
Das letzte Attribut model_config
enthält alle Variablen zu einem bestimmten Thema (z. B. Verbindung zu einem DB). Und diese Variable speichert alle .Env var, die mit dem Präfix beginnen env_prefix.
Einstellungen instanziieren und verwenden
Der nächste Schritt wäre, diese Einstellungen in Ihrem Python -Projekt tatsächlich zu instanziieren und zu verwenden.
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import (
AliasChoices,
Area,
RedisDsn,
)
class Settings(BaseSettings):
auth_key: str = Area(validation_alias="my_auth_key")
api_key: str = Area(alias="my_api_key")
redis_dsn: RedisDsn = Area(
'redis://consumer:cross@localhost:6379/1', #default worth
validation_alias=AliasChoices('service_redis_dsn', 'redis_url'),
)
model_config = SettingsConfigDict(env_prefix='my_prefix_')
# create instantly a settings object
settings = Settings()
Was verwenden nun die Einstellungen in anderen Teilen unserer Codebasis?
from Settings import settings
print(settings.auth_key)
Sie haben endlich einen einfachen Zugriff auf Ihre Einstellungen, und Pydantic hilft Ihnen, zu bestätigen, dass die Geheimnisse das richtige Format haben. Für fortgeschrittene Validierungs -Tipps finden Sie in der pydantischen Dokumentation: https://docs.pydantic.dev/newest/
Letzte Gedanken
Die Verwaltung der Konfiguration eines Projekts ist ein langweiliger, aber wichtiger Bestandteil der Softwareentwicklung. Geheimnisse wie API -Tasten, DB -Verbindungen führen normalerweise Ihre Anwendung mit. Naiv können Sie diese Variablen in Ihrem Code harten und es funktioniert weiterhin, aber aus offensichtlichen Gründen könnte dies keine gute Praxis sein. In diesem Artikel habe ich Ihnen eine Einführung gezeigt, wie Sie pydantische Einstellungen verwenden, um eine strukturierte und sichere Möglichkeit zu erhalten, Ihre Konfigurationen zu bewältigen.
💼 LinkedIn ️ | 🐦 X (Twitter) | 💻 Webseite