Python-Entwickler arbeiten oft mit Daten, die niemand sonst sehen soll, wie API-Schlüssel, API-Geheimnisse, Datenbanknamen usw.
Programmierer speichern diese Geheimnisse unter anderem in Umgebungsvariablen. In diesem Artikel erfahren Sie alles, was Sie über die Verwendung von Umgebungsvariablen in Python wissen müssen. Wir zeigen Ihnen, wie Sie Python-Umgebungsvariablen festlegen, wie Sie sie erhalten und welche verschiedenen Möglichkeiten Sie haben, alle Ihre Geheimnisse zu schützen. Wir schließen mit einem Beispiel aus der Praxis ab, wie wir sie hier bei Vonage verwenden.
Verwenden Sie die folgenden Links, um im Artikel weiterzuspringen:
Umgebungsvariablen (manchmal auch „Env-Variablen“ genannt) sind Variablen, die Sie außerhalb Ihres Programms speichern und die dessen Ausführung beeinflussen können. Sie können beispielsweise Umgebungsvariablen festlegen, die den Schlüssel und das Geheimnis einer API enthalten. Ihr Programm könnte diese Variablen dann verwenden, wenn es eine Verbindung zur API herstellt.
Das Speichern Ihrer Geheimnisse in Ihrer Umgebung anstelle Ihres Quellcodes hat einige Vorteile:
Im Wesentlichen ermöglichen Ihnen Umgebungsvariablen, das Verhalten Ihres Programms zu ändern, ohne das Programm selbst zu ändern.
Sie können Umgebungsvariablen in Ihrem Betriebssystem speichern, es gibt jedoch auch andere Möglichkeiten, sie zu verwenden, über die wir in Kürze mehr erfahren werden.
Um diesem Tutorial folgen zu können, muss Python auf Ihrem Computer installiert sein. Sie können Python installieren, indem Sie es von der offiziellen Python-Website herunterladen.
Sie erhalten und legen Umgebungsvariablen in Python mithilfe des integrierten Betriebssystemmoduls fest.
Sie können alle Umgebungsvariablen in Ihrem Programm anzeigen, indem Sie den folgenden Code in einer Python-Datei speichern und dann dieses Python-Programm ausführen:
Ihr Python-Interpreter sollte alle Umgebungsvariablen Ihres Betriebssystems ausdrucken, wenn er diesen Code ausführt. Sie können auf die verschiedenen Umgebungsvariablen in os.environ wie auf ein Python-Wörterbuch zugreifen. Hier sind zwei Möglichkeiten, Umgebungsvariablen mit Python abzurufen:
Die letzten beiden Zeilen in Ihrem Python-Code oben bewirken dasselbe: Beide erhalten die Umgebungsvariable USER von Ihrem Betriebssystem. Wenn Sie jedoch die erste Methode verwenden, löst Python eine Ausnahme aus, wenn die Variable nicht gefunden wird.
Eine gute Vorgehensweise ist die Verwendung von os.environ['MY_ENVIRONMENT_VARIABLE'], wenn die Umgebungsvariable für die Ausführung Ihrer Python-Anwendung erforderlich ist, und os.environ.get('MY_ENVIRONMENT_VARIABLE'), wenn sie optional ist.
Um Umgebungsvariablen in Python festzulegen, können Sie sie wie ein Wörterbuch zum os.environ-Objekt hinzufügen. Allerdings sind nur Strings erlaubt, da diese direkt an die Shell übergeben werden, in der Ihr Interpreter läuft.
Um eine Umgebungsvariable zu aktualisieren, überschreiben Sie sie einfach auf genau die gleiche Weise:
Es gibt verschiedene Gründe, warum Sie Umgebungsvariablen speichern möchten, daher gibt es auch verschiedene Möglichkeiten, sie zu speichern. Manchmal müssen Sie einfach etwas auf Ihrem lokalen Computer festlegen, während Sie in anderen Fällen Ihre Anwendung möglicherweise in der Produktion ausführen müssen – diese Anwendungsfälle erfordern unterschiedliche Ansätze!
Im Folgenden zeigen wir Ihnen fünf Möglichkeiten, Umgebungsvariablen für Python zu speichern:
Manchmal möchten Sie keine Umgebungsvariable über Python erstellen, wenn Sie nur schnell etwas festlegen möchten. Glücklicherweise kann dies über die Befehlszeile erfolgen. Die Beispiele, die ich hier gebe, funktionieren für Unix-ähnliche Systeme (Mac, Linux usw.), aber wenn Sie Windows verwenden, können Sie in diesem Tutorial lernen, wie Sie Umgebungsvariablen abrufen und festlegen.
Im vorherigen Beispiel war USER eine von Ihrem Betriebssystem festgelegte Umgebungsvariable, die angibt, wer Ihren Computer verwendet. Obwohl Ihr Betriebssystem diese Variable automatisch erstellt, können Sie auch Ihre eigenen Umgebungsvariablen erstellen.
Sie können alle Umgebungsvariablen von Ihrer Befehlszeile aus sehen, indem Sie eine Befehlszeile öffnen und Folgendes eingeben (auf einem Unix-ähnlichen System):
Exportieren
Dadurch erhalten Sie eine Liste aller Umgebungsvariablen, auf die Ihre Befehlszeilen-Shell Zugriff hat.
So erstellen Sie eine Umgebungsvariable in Ihrer Befehlszeile:
VONAGE_API=your_api exportieren
Dadurch wird eine Variable namens VONAGE_API erstellt und ihr Wert auf your_api gesetzt. Sie können den Wert einer beliebigen Variablen wie folgt drucken:
echo $VONAGE_API
Wenn Sie den obigen Code ausführen, sehen Sie your_api als Ausgabe.
Wenn Sie über Ihr Terminal/Ihre Befehlszeile eine neue Umgebungsvariable erstellen, ist diese nur für diese Sitzung vorhanden. Wenn Sie Ihr Terminal schließen, ist die Umgebungsvariable nicht mehr vorhanden. Beim Programmieren möchten Sie häufig, dass Ihre Umgebungsvariablen bestehen bleiben, damit sie jedes Mal verwendet werden können, wenn Sie Ihren Code ausführen. Eine Möglichkeit, dies zu erreichen, besteht darin, sie in einer Datei zu speichern: zum Beispiel einer .env-Datei.
Lassen Sie uns ein Beispielprojekt erstellen, um zu demonstrieren, wie eine .env-Datei zum Speichern von Umgebungsvariablen verwendet wird.
Erstellen Sie zunächst mit Ihrem Terminal einen neuen Ordner für dieses Tutorial, wechseln Sie dorthin und erstellen Sie darin eine .env-Datei:
mkdir env_variables_tutorial cd env_variables_tutorial touch .env
Fügen Sie diese Zeile zu Ihrer .env-Datei hinzu:
VONAGE_API=your_api
python3 -m venv venv . ./venv/bin/activate
Jetzt befinden wir uns in einer virtuellen Python-Umgebung und können das benötigte Paket installieren.
pip install python-dotenv
Jetzt können wir das Modul dotenv aus diesem Paket verwenden, um Umgebungsvariablen aus der .env-Datei in die Umgebung zu laden, auf die Python mit dem Modul os zugreifen kann. Erstellen Sie eine Python-Datei mit folgendem Inhalt:
Die Funktion „load_dotenv“ bringt Umgebungsvariablen aus der .env-Datei in os.environ, die dann wie alle anderen von Ihrem Betriebssystem festgelegten Umgebungsvariablen verwendet werden können.
Wenn Sie Software für die Produktion erstellen, werden Sie diese wahrscheinlich nicht auf Ihrem Computer ausführen. Stattdessen werden Sie Ihren Code höchstwahrscheinlich auf einem Server ausführen.
Das bedeutet, dass Sie wissen müssen, wie Sie Umgebungsvariablen überall dort festlegen und abrufen, wo Sie Ihren Code in der Produktion ausführen.
Hier ist eine Liste der Cloud-Anbieter und wo Sie weitere Informationen zum Umgang mit Umgebungsvariablen erhalten können:
Wenn Sie cloudbasierte CI/CD-Systeme wie GitHub Actions, CircleCI, Travis oder Jenkins verwenden, können Sie auch Umgebungsvariablen in deren Systemen speichern.
Wenn Sie GitHub für Ihr Projekt verwenden, können Sie Umgebungsvariablen in den Einstellungen für Ihr Repo speichern, indem Sie zur Registerkarte „Einstellungen“ navigieren und API-Schlüssel usw. in der Einstellung „Geheimnisse und Variablen“ unter „Sicherheit“ festlegen ".
Hier können Sie ein neues Repository-Geheimnis erstellen, indem Sie auf die Option klicken und Werte festlegen. Dies ist jetzt in Ihren GitHub Actions-Läufen verfügbar.
Es gibt viele Informationen zum Einrichten von Umgebungsvariablen mit GitHub Actions sowie CircleCI, Travis und Jenkins sowie Informationen für andere Anbieter.
Das Speichern Ihrer Geheimnisse in einer .env-Datei behält Ihre Umgebungsvariablen bei, es treten jedoch einige Probleme auf.
Angenommen, Sie sind in einem Team mit zehn Personen. Jeder verfolgt seine Geheimnisse in .env-Dateien und eines der Geheimnisse ändert sich (sagen wir, Sie erhalten einen neuen API-Schlüssel). In diesem Fall müssen alle zehn Personen ihre .env-Datei aktualisieren, was nicht sehr effizient ist.
Oder was wäre, wenn Sie sich entscheiden würden, von Heroku zu AWS zu wechseln? In diesem Fall müssen Sie lernen, mit Geheimnissen auf einer neuen Plattform umzugehen, was zusätzliche Arbeit erfordert.
Um diese Probleme zu lösen, verwenden einige Programmierer einen universellen Secrets-Manager wie Doppler. Mit einem universellen Secrets-Manager können Sie Ihre Geheimnisse an einem Ort speichern, sodass jeder in Ihrem Team darauf zugreifen kann.
Mit einem Universal Secrets Manager sind Ihre Geheimnisse unabhängig von Ihrem lokalen Computer oder einem Cloud-Anbieter, sodass Sie sie immer dabei haben können, egal wo Sie Ihren Code ausführen.
Wenn Sie das Beispielprojekt oder Beispielcode-Snippets einer externen API verwenden, stellt der Eigentümer/Betreuer manchmal Tools zur Verfügung, um die Verwendung zu vereinfachen. Oft müssen Sie Umgebungsvariablen verwenden, um die Tools optimal einzurichten.
Hier bei Vonage nutzen wir Umgebungsvariablen in unseren Python-Codebeispielen zum Senden von SMS, zum Tätigen von Telefonanrufen, zum Senden von Bestätigungscodes, zum Überprüfen von Betrugswerten und vielem mehr.
Angenommen, Sie möchten die Number Insight API von Vonage verwenden, um Informationen zu einigen Telefonnummern zu erhalten. In diesem Fall möchten Sie möglicherweise ein Codebeispiel wie dieses verwenden, um die Dinge in Python schnell zum Laufen zu bringen.
Um diesen Beispielcode zu verwenden, erstellen Sie zunächst ein Vonage-Konto (keine Sorge, es ist kostenlos!), um einen API-Schlüssel und ein Geheimnis zur Authentifizierung Ihrer API-Aufrufe zu erhalten.
Klonen Sie als Nächstes das Repo unter https://github.com/Vonage/vonage-python-code-snippets/. Sobald dies erledigt ist, erstellen Sie eine neue virtuelle Python-Umgebung und installieren Sie die erforderlichen Abhängigkeiten mit
Sie sollten Informationen über die von Ihnen eingegebene Telefonnummer sehen, was bedeutet, dass Sie die Number Insight API von Vonage verwendet haben, um die Telefonnummer aus Ihren Umgebungsvariablen zu ermitteln, ohne die Python-Datei selbst überhaupt bearbeiten zu müssen! Dies ist ein großer Vorteil der Verwendung von Umgebungsvariablen.
Deaktivieren Sie #, wenn die virtuelle Umgebung von früher noch aktiv ist. python3 -m venv venv . ./venv/bin/activate pip install -r require.txt
Benennen Sie abschließend die Datei .env.dist in .env um, fügen Sie Ihren API-Schlüssel und Ihr Geheimnis zur Datei hinzu und ändern Sie den Wert für INSIGHT_NUMBER in die Nummer, nach der Sie suchen möchten. Jetzt können Sie den Code mit
ausführenpython number-insight/ni-basic.py
Sie sollten Informationen über die von Ihnen eingegebene Telefonnummer sehen, was bedeutet, dass Sie die Number Insight API von Vonage verwendet haben, um die Telefonnummer aus Ihren Umgebungsvariablen zu ermitteln, ohne die Python-Datei selbst überhaupt bearbeiten zu müssen! Dies ist ein großer Vorteil der Verwendung von Umgebungsvariablen.
Das Abrufen und Festlegen von Umgebungsvariablen ist ein wesentlicher Bestandteil der Erstellung von Produktionssoftware. Wenn Sie dieses Tutorial abgeschlossen haben, wissen Sie nun, wie Sie Umgebungsvariablen mit Python abrufen und festlegen.
Sie verstehen jetzt auch Ihre verschiedenen Optionen zum Speichern Ihrer Geheimnisse: vorübergehendes Festlegen über Ihr Betriebssystem, Speichern in einer .env-Datei, Speichern in der Cloud und Verwenden eines universellen Geheimnismanagers. Welche Methode Sie verwenden, hängt von den Umständen des Projekts ab, an dem Sie arbeiten. Wenn Sie mehr lesen möchten, finden Sie in diesem Beitrag zur Verwendung privater Schlüssel in Umgebungsvariablen weitere Informationen.
Wenn Sie mit der Nutzung von Vonage-APIs beginnen möchten, können Sie sich für ein kostenloses Entwicklerkonto anmelden (mit kostenlosen Credits!). Wenn Sie Fragen zu diesem Tutorial haben, können Sie sich gerne über unseren Vonage Community Slack an uns wenden und fragen uns dort drüben oder indem Sie uns eine Nachricht auf X senden, früher bekannt als Twitter.
Jetzt können Sie versuchen, Umgebungsvariablen in Ihren eigenen Python-Projekten zu verwenden!
Das obige ist der detaillierte Inhalt vonPython-Umgebungsvariablen (Env Vars): Eine Einführung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!