Lesen Sie Umgebungsvariablen aus der Env-Datei in Python

Jay Shaw 21 Juni 2023
  1. Umgebungsvariablen aus einer lokalen Umgebungsdatei lesen
  2. Lesen Sie Umgebungsvariablen durch Ausführen eines Bash-Skripts
  3. Abschluss
Lesen Sie Umgebungsvariablen aus der Env-Datei in Python

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 Beispiel config.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, um env-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 Beispiel config.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.

Verwandter Artikel - Python Environment