Lesen Sie Umgebungsvariablen aus der Env-Datei in Python
- Umgebungsvariablen aus einer lokalen Umgebungsdatei lesen
- Lesen Sie Umgebungsvariablen durch Ausführen eines Bash-Skripts
- Abschluss
Eine Umgebungsdatei speichert alle Abhängigkeiten, die ein Programm benötigt, sodass es nicht mit Paketen aus mehreren Pfaden interagieren muss.
Dieser Artikel konzentriert sich darauf, wie man .env
-Dateien in Python liest und Umgebungsvariablen in Python aus einer lokalen Umgebungsdatei importiert.
Umgebungsvariablen aus einer lokalen Umgebungsdatei lesen
Die meisten modernen Programme verwenden Docker, um ihre Programme in Umgebungen auszuführen. Ein Docker ist wie eine alternative virtuelle Maschine mit effizienter Speicherverwaltung.
Aber während des Testens muss ein Programm aus einem Docker-Container entfernt und lokal mit einer lokalen Umgebungsdatei getestet werden.
In diesem Artikel wird erklärt, wie Sie eine lokale Umgebungsdatei einrichten und .env
-Dateien in Python importieren und lesen.
Erstellen Sie eine Umgebungsdatei für Python-Skripts
Eine Umgebungsdatei wird erstellt, indem Schlüssel-Wert-Paare des Programms in einer Textdatei bereitgestellt und mit der Erweiterung .env
gespeichert werden.
Erstellen Sie eine .env
-Datei, indem Sie die folgenden Schritte ausführen:
-
Öffnen Sie Notepad und schreiben Sie die Umgebungsvariablen hinein. Zum Beispiel,
MY_ENV_VAR="This is my env var content."
-
Speichern Sie diese Datei unter einem Namen gefolgt von der Erweiterung
.env
, zum Beispielconfig.env
. Dadurch wird eine.env
-Datei erstellt. -
Wir müssen nun ein Python-Skript im selben Verzeichnis erstellen, in dem sich die
.env
-Datei befindet, umenv
-Dateien in Python zu lesen.
Erstellen Sie ein Python-Skript, das die Umgebungsvariablen liest
Dieses Programm verwendet die Bibliothek python-dotenv
, um .env
-Dateien in Python aus einer lokalen Umgebungsdatei zu lesen. Um es zu installieren, öffnen Sie die Eingabeaufforderung oder PowerShell und schreiben Sie den Befehl:
pip install python-dotenv
Sobald python-dotenv
installiert ist, können wir fortfahren, Skripte zu laden und env
-Dateien in Python zu lesen. Das Programm verwendet zwei Bibliothekspakete: python-dotenv
und os
.
Die Umgebungsvariablen werden mit der Bibliotheksfunktion load_dotenv()
in den Code geladen. Die Funktion load_dotenv()
wird verwendet, um Umgebungsvariablen aus der .env
-Datei zu extrahieren.
Eine weitere Bibliotheksfunktion ist dotenv_values
, die der vorherigen ähnlich ist, außer dass sie nicht mit Umgebungsvariablen interagiert, sondern stattdessen ein dict
aus der .env
-Datei mit den geparsten Werten zurückgibt.
Unten ist das Python-Programm:
import os
from dotenv import load_dotenv
load_dotenv()
MY_ENV_VAR = os.getenv("MY_ENV_VAR")
Die letzte Codezeile importiert die Werte der Variable MY_ENV_VAR
aus der Datei .env
mit der Funktion os.getenv
und speichert sie in einem Python-Programm mit einer Variablen mit ähnlichem Namen.
Wenn Sie die Variable MY_ENV_VAR
drucken, wird der Inhalt aus der .env
-Datei angezeigt:
This is my env var content.
Lesen Sie Umgebungsvariablen durch Ausführen eines Bash-Skripts
Dies ist die zweite Methode, die auch das Problem löste, dass das Programm keine .env
-Dateien in Python lesen kann und die Bibliotheksfunktion load_dotenv
statt Umgebungsvariablen none
zurückgibt. Dies geschieht, weil die .env
-Datei nicht bezogen wird, was bedeutet, dass das Python-Programm die .env
-Datei nicht lesen kann und die Datenvariablen nicht laden kann.
In Systemen, die Shell-Skripte ausführen, können das Laden der Umgebungsdatei und das Ausführen des Python-Skripts zusammengepackt werden. Auf diese Weise können Sie die .env
-Datei in eine virtuelle Umgebung laden und dann das Python-Skript in dieser Umgebung ausführen.
Dieser Abschnitt zeigt, wie Umgebungsvariablen geladen und in ein Shell-Skript eingeschlossen werden, um .env
-Dateien in Python zu lesen.
Erstellen Sie eine .env
-Datei
Dieser Prozess ähnelt dem im vorherigen Abschnitt, aber anstatt einen generischen Texteditor wie Notepad zu verwenden, ist ein Texteditor erforderlich, der EOL-Konvertierungen anbietet.
EOL-Konvertierungen konvertieren das Zeilenende in einer Textdatei. Um eine solche Datei zu erstellen, müssen wir:
-
Laden Sie Notepad++ oder einen anderen Texteditor herunter und installieren Sie ihn, der End-of-Line-Konvertierungen anbietet.
-
Schreiben Sie einige Umgebungsvariablen, wie:
TYPE=prod PORT=5000
-
Gehen Sie zu
Bearbeiten > EOL
-Konvertierung und wählen Sie Unix(LF). -
Speichern Sie die Datei mit der Erweiterung
.env
, zum Beispielconfig.env
Dadurch wird eine Umgebungsdatei erstellt, die von Shell-Skripten gelesen werden kann. Lassen Sie uns nun etwas Python-Code schreiben.
Erstellen Sie ein Python-Skript, das .env
-Dateien in Python lesen kann
Dieses Programm importiert und liest .env
-Dateien in Python, ohne dass eine externe Python-Bibliothek benötigt wird. Das Programm importiert das Bibliothekspaket os
und verwendet die Bibliotheksfunktion os.environ
, um Werte aus Variablen zu extrahieren.
Die extrahierten Werte werden dann gedruckt.
import os
print(os.environ.get("TYPE"))
print(os.environ.get("PORT"))
Dieses Skript kann jedoch nicht selbstständig .env
-Dateien in Python lesen. Das Ausführen des Skripts gibt None
zurück.
Win 10@DESKTOP-8MEIQB8 MINGW64 ~/try
$ python test.py
None
None
Dies geschieht, weil das Python-Skript nicht auf die Umgebungsdatei zugreifen kann, obwohl sie sich im selben Verzeichnis befindet. Aus diesem Grund wird ein Shell-Skript verwendet, das die Datei .env
bezieht und gleichzeitig das Python-Skript ausführt.
Erstellen Sie ein Shell-Skript, das die .env
-Datei in das Python-Skript lädt
Dieser Vorgang entspricht dem Erstellen einer Umgebungsdatei, da die Bash-Befehle in der Unix-EOL-Konvertierung geschrieben werden müssen.
Öffnen Sie eine neue Datei in Notepad++ und schreiben Sie Bash-Befehle wie:
#!/usr/bin/env bash
set -a
source config.env
set +a
python test.py
Die erste Codezeile ist ein Shebang, eine Zeichenfolge, die normalerweise in einem Bash-Skript angegeben werden muss. Hier wird der Dateipfad angezeigt, von dem aus auf Bash zugegriffen wird.
Das set -a
erlaubt es, alle Variablen nach aussen in verschiedene untergeordnete Prozesse zu exportieren. Hier ist dieser untergeordnete Prozess das Python-Skript, das ausgeführt werden muss.
Es ist eine Abkürzung für die Unix-Funktion allexport
.
Die Umgebungsdatei wird mit der Syntax source config.env
gesäuert oder anders ausgedrückt in das Shell-Skript geladen. Das -a
ermöglicht den Export aller Variablen in der .env
-Datei, die in die Umgebung gelangt.
Das set +a
arbeitet gegensätzlich zum set -a
und schaltet den Export von Variablen ab, sodass keine andere Datei oder Code davon betroffen ist.
Die letzte Codezeile startet einen untergeordneten Prozess mit der Syntax python test.py
. Es führt das Python-Skript innerhalb der Umgebung aus, liest .env
-Dateien in Python und gibt die Ausgabe des Python-Skripts zurück.
Sobald der Code innerhalb des Shell-Skripts geschrieben ist, muss sein EOL in Unix konvertiert und dann mit einer .sh
-Erweiterung wie run.sh
gespeichert werden. Speichern Sie die Datei in demselben Verzeichnis, in dem sich die Umgebungsdatei und die Python-Skripts befinden.
Bei der Ausführung innerhalb von Bash zeigt der Befehl tree
alle drei Dateien im selben Verzeichnis an.
jay@DESKTOP-8MEIQB8:/mnt/c/Users/Win 10/try$ tree
.
├── config.env
├── run.sh
└── test.py
Nachdem Sie die obigen Schritte ausgeführt haben, ist es an der Zeit, das Bash-Skript auszuführen.
Führen Sie das Bash-Skript mit einem Befehlszeilen-Runner aus
Ein Befehlszeilen-Runner wie eine Eingabeaufforderung oder PowerShell hilft, das Bash-Skript in Windows auszuführen. Eine bessere Option ist die Installation von git-bash
, mit der wir Bash direkt aus jedem Verzeichnis in Windows ausführen können.
In diesem Abschnitt werden beide Möglichkeiten erläutert.
Installieren Sie Bash in der Eingabeaufforderung oder PowerShell
Das Feature Windows Subsystem for Linux
oder WSL muss aktiviert sein, um Bash unter Windows auszuführen. Es befindet sich in der Option Windows-Funktionen ein- oder ausschalten.
Gehen Sie zum Startmenü und suchen Sie in der Suchleiste nach dieser Option. Wenn Sie darauf klicken, öffnet sich ein Popup-Fenster mit einer Liste von Optionen und Kontrollkästchen. Scrollen Sie nach unten, bis Sie Windows Subsystem for Linux
finden, und aktivieren Sie das Kontrollkästchen daneben.
Sobald WSL in Windows aktiviert ist, gehen Sie zum Microsoft Store und installieren Sie eine Linux-Distribution wie Ubuntu. Starten Sie den Computer nach der Installation neu, und Bash kann in der Eingabeaufforderung und in PowerShell verwendet werden.
Um zu überprüfen, ob es richtig installiert ist und funktioniert, gehen Sie zur Eingabeaufforderung oder PowerShell und schreiben Sie bash
. Das Terminal wechselt zu Bash.
Installieren Sie Git-Bash
Eine Alternative zur WSL-Methode ist die Git-Bash-Methode. Bash kann über Git direkt heruntergeladen und im System installiert werden.
Öffnen Sie das Installationsprogramm, nachdem Sie es heruntergeladen haben. Wählen Sie einen bevorzugten Installationsort und belassen Sie alle anderen Einstellungen auf den Standardeinstellungen.
Das Installationsprogramm zeigt mehrere Fenster mit vielen Einstellungen an, klicken Sie also wiederholt auf Weiter
, bis die Installation beginnt.
Führen Sie das Shell-Skript aus
Starten Sie Bash in dem Verzeichnis, in dem die Python- und Shell-Skripte gespeichert sind. Wenn Git-Bash verwendet wird, gehen Sie direkt in das Verzeichnis, klicken Sie mit der rechten Maustaste und wählen Sie Git Bash Here
.
Wenn PowerShell oder die Eingabeaufforderung verwendet werden, muss das Bash-Terminal manuell ausgeführt werden, nachdem Sie in das erforderliche Verzeichnis gewechselt sind. Geben Sie im Verzeichnis den Befehl bash
ein.
Innerhalb von Bash muss das Shell-Skript ausgeführt werden. Das Shell-Skript heißt in diesem Beispiel run.sh
, also lautet der Bash-Befehl zum Ausführen eines Shell-Skripts:
./run.sh
Dadurch wird die Umgebung aktiviert und das darin enthaltene Python-Skript ausgeführt und die Ausgabe zurückgegeben:
Win 10@DESKTOP-8MEIQB8 MINGW64 ~/try
$ ./run.sh
prod
5000
Abschluss
Dieser Artikel erklärt mehrere Möglichkeiten, .env
-Dateien in Python zu lesen, Umgebungsvariablen aus einer .env
-Datei zu extrahieren und sie dann in Python-Skripten zu verwenden. Der Leser sollte in der Lage sein, leicht .env
-Dateien und Shell-Skripte zu erstellen, die Python-Codes und .env
-Dateien binden.