Konfigurieren Ihrer lokalen Umgebung für die Bereitstellung von Python-Web-Apps in Azure
Dieser Artikel führt Sie durch das Einrichten Ihrer lokalen Umgebung zum Entwickeln von Python-Web-Apps und deren Bereitstellung in Azure. Ihre Web-App kann reine Python sein oder eines der gängigen Python-basierten Webframeworks wie Django, Flask oder FastAPI verwenden.
Python-Web-Apps, die lokal entwickelt wurden, können für Dienste wie Azure-App Service, Azure Container Apps oder Azure Static Web-Apps bereitgestellt werden. Es gibt viele Optionen für die Bereitstellung. Beispielsweise können Sie für die App Service-Bereitstellung aus Code, einem Docker-Container oder einer statischen Web App bereitstellen. Wenn Sie aus Code bereitstellen, können Sie mit Visual Studio Code, mit der Azure CLI, aus einem lokalen Git-Repository oder mit GitHub-Aktionen bereitstellen. Wenn Sie in einem Docker-Container bereitstellen, können Sie dies aus der Azure-Containerregistrierung, Docker Hub oder einer beliebigen privaten Registrierung tun.
Bevor Sie mit diesem Artikel fortfahren, empfehlen wir Ihnen, die Einrichtung Ihrer Entwicklungsumgebung auf Anleitungen zum Einrichten Ihrer Entwicklungsumgebung für Python und Azure zu überprüfen. Im Folgenden wird die Einrichtung und Konfiguration für die Entwicklung von Python-Web-Apps erläutert.
Nachdem Sie Ihr lokales Umgebungssetup für die Entwicklung von Python-Web-App erhalten haben, können Sie die folgenden Artikel in Angriff nehmen:
- Schnellstart: Erstellen einer Python-Web-App (Django oder Flask) in Azure-App Service.
- Lernprogramm: Bereitstellen einer Python-Web-App (Django oder Flask) mit PostgreSQL in Azure
- Erstellen und Bereitstellen einer Flask-Web-App in Azure mit einer vom System zugewiesenen verwalteten Identität
Arbeiten mit Visual Studio Code
Die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio Code ist eine einfache Möglichkeit zum Entwickeln von Python-Web-Apps und zum Arbeiten mit Azure-Ressourcen, die Web-Apps verwenden.
Tipp
Stellen Sie sicher, dass die Python-Erweiterung installiert ist. Eine Übersicht über die Arbeit mit Python in VS Code finden Sie unter "Erste Schritte mit Python in VS Code".
In VS Code arbeiten Sie mit Azure-Ressourcen über VS-Codeerweiterungen. Sie können Erweiterungen aus der Erweiterungsansicht oder der Tastenkombination STRG+UMSCHALT+X installieren. Bei Python-Web-Apps arbeiten Sie wahrscheinlich mit einer oder mehreren der folgenden Erweiterungen:
Mit der Azure-App-Diensterweiterung können Sie in Visual Studio Code mit Azure-App Service interagieren. Der App-Dienst bietet vollständig verwaltetes Hosting für Webanwendungen, einschließlich Websites und Web-APIs.
Mit der Azure Static Web-Apps-Erweiterung können Sie Azure Static Web-Apps direkt aus VS Code erstellen. Statische Web-Apps ist serverlos und eine gute Wahl für statisches Hosten von Inhalten.
Wenn Sie die Arbeit mit Containern planen, installieren Sie Folgendes:
Die Docker-Erweiterung zum Erstellen und Arbeiten mit Containern lokal. Sie können beispielsweise eine containerisierte Python-Web-App auf Azure-App Dienst ausführen, indem Sie Web-Apps für Container verwenden.
Die Azure Container Apps-Erweiterung zum Erstellen und Bereitstellen von containerisierten Apps direkt aus Visual Studio Code.
Es gibt weitere Erweiterungen wie Azure Storage, Azure Databases und Azure Resources-Erweiterungen. Sie können diese und andere Erweiterungen jederzeit nach Bedarf hinzufügen.
Erweiterungen in Visual Studio Code sind wie erwartet in einer typischen IDE-Schnittstelle und mit umfangreicher Schlüsselwort (keyword) Unterstützung mithilfe der VS Code-Befehlspalette verfügbar. Um auf die Befehlspalette zuzugreifen, verwenden Sie die Tastenkombination STRG+UMSCHALT+P. Die Befehlspalette ist eine gute Möglichkeit, um alle möglichen Aktionen anzuzeigen, die Sie für eine Azure-Ressource ausführen können. Der folgende Screenshot zeigt einige der Aktionen für App Service.
Arbeiten mit Dev-Containern in Visual Studio Code
Python-Entwickler verlassen sich häufig auf virtuelle Umgebungen, um eine isolierte und eigenständige Umgebung für ein bestimmtes Projekt zu erstellen. In virtuellen Umgebungen können Entwickler Abhängigkeiten, Pakete und Python-Versionen separat für jedes Projekt verwalten und Konflikte zwischen verschiedenen Projekten vermeiden, die möglicherweise unterschiedliche Paketversionen erfordern.
Während es in Python beliebte Optionen für die Verwaltung von Umgebungen wie virtualenv
oder venv
gibt, können Sie die Visual Studio Code Dev Container-Erweiterung (basierend auf der offenen Dev Container-Spezifikation) einen Docker-Container als containerisierte Umgebung mit vollem Funktionsumfang verwenden. Sie ermöglicht Entwicklern die Definition einer konsistenten und leicht reproduzierbaren Toolkette mit allen erforderlichen Tools, Abhängigkeiten und vorkonfigurierten Erweiterungen. Dies bedeutet, wenn Sie über Systemanforderungen, Shellkonfigurationen oder andere Sprachen verfügen, können Sie einen Dev-Container verwenden, um alle Teile Ihres Projekts explizit zu konfigurieren, die sich möglicherweise außerhalb einer grundlegenden Python-Umgebung befinden.
Beispielsweise kann ein Entwickler einen einzelnen Dev-Container so konfigurieren, dass alles enthalten ist, was für die Arbeit an einem Projekt erforderlich ist, einschließlich eines PostgreSQL-Datenbankservers zusammen mit der Projektdatenbank und Beispieldaten, einem Redis-Server, Nginx, Front-End-Code, Clientbibliotheken wie React usw. Darüber hinaus würde der Container den Projektcode, die Python-Laufzeit und alle Python-Projektabhängigkeiten mit den richtigen Versionen enthalten. Schließlich kann der Container Visual Studio Code-Erweiterungen angeben, die installiert werden sollen, sodass das gesamte Team über die gleichen Tools verfügt. Wenn also ein neuer Entwickler dem Team beitritt, ist die gesamte Umgebung, einschließlich Tools, Abhängigkeiten und Daten, bereit, auf ihren lokalen Computer geklont zu werden, und sie können sofort mit der Arbeit beginnen.
Siehe "Entwickeln innerhalb eines Containers".
Arbeiten mit Visual Studio 2022
Visual Studio 2022 ist eine umfassende integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) mit Unterstützung für die Python-Anwendungsentwicklung und viele integrierte Tools und Erweiterungen für den Zugriff auf und die Bereitstellung in Azure-Ressourcen. Während sich die meisten Dokumentationen zum Erstellen von Python-Web-Apps auf Azure auf die Verwendung von Visual Studio Code konzentrieren, ist Visual Studio 2022 eine großartige Option, wenn Sie es bereits installiert haben, Sie mit der Verwendung vertraut sind und sie für .NET- oder C++-Projekte verwenden.
Im Allgemeinen siehe Visual Studio | Python-Dokumentation für alle Dokumentationen zur Verwendung von Python in Visual Studio 2022.
Schritte zum Einrichten finden Sie unter Installieren der Python-Unterstützung in Visual Studio , die Sie durch die Schritte zum Installieren der Python-Workload in Visual Studio 2022 führt.
Allgemeine Workflows zur Verwendung von Python für die Webentwicklung finden Sie in der Schnellstartanleitung: Erstellen Ihrer ersten Python-Web-App mit Visual Studio. Dieser Artikel ist hilfreich, um zu verstehen, wie Sie eine Python-Webanwendung von Grund auf neu erstellen (aber keine Bereitstellung in Azure enthalten).
Informationen zur Verwendung von Visual Studio 2022 zum Verwalten von Azure-Ressourcen und zur Bereitstellung in Azure finden Sie unter Azure Development with Visual Studio. Während ein Großteil der Dokumentation hier speziell Erwähnung s .NET, funktioniert das Tool zum Verwalten von Azure-Ressourcen und die Bereitstellung in Azure unabhängig von der Programmiersprache gleich.
Wenn in Visual Studio 2022 kein integriertes Tool für eine bestimmte Azure-Verwaltungs- oder Bereitstellungsaufgabe verfügbar ist, können Sie immer Azure CLI-Befehle verwenden.
Arbeiten mit anderen IDEs
Wenn Sie in einer anderen IDE arbeiten, die keine explizite Unterstützung für Azure hat, können Sie die Azure CLI verwenden, um Azure-Ressourcen zu verwalten. Im folgenden Screenshot ist eine einfache Flask-Web-App in der PyCharm IDE geöffnet. Die Web-App kann mithilfe des az webapp up
Befehls in einem Azure-App Dienst bereitgestellt werden. Im Screenshot wird der CLI-Befehl im eingebetteten PyCharm-Terminal-Emulator ausgeführt. Wenn Ihre IDE keinen eingebetteten Emulator hat, können Sie ein beliebiges Terminal und denselben Befehl verwenden. Die Azure CLI muss auf Ihrem Computer installiert sein und in beiden Fällen zugänglich sein.
Azure CLI-Befehle
Wenn Sie lokal mit Web-Apps mit den Azure CLI-Befehlen arbeiten, arbeiten Sie in der Regel mit den folgenden Befehlen:
Befehl | Beschreibung |
---|---|
az webapp | Verwaltet Web-Apps. Enthält die Unterbefehle zum Erstellen einer Web-App und zum Erstellen und Bereitstellen aus einem lokalen Arbeitsbereich |
az container app | Verwaltet Azure-Container-Apps. |
az staticwebapp | Verwaltet azure Static Web-Apps. |
az group | Verwaltet Ressourcengruppen und Vorlagenbereitstellungen. Verwenden Sie den Unterbefehl zum Erstellen einer Ressourcengruppe, um Ihre Azure-Ressourcen einzulagern. |
az appservice | Verwaltet App Service-Pläne. |
az config | Verwaltete Azure CLI-Konfiguration. Zum Speichern von Tastaturanschlägen können Sie einen Standardspeicherort oder eine Ressourcengruppe definieren, die von anderen Befehlen automatisch verwendet wird. |
Hier ist ein Beispiel für einen Azure CLI-Befehl zum Erstellen einer Web-App und zugeordneter Ressourcen und zum Bereitstellen in Azure in einem Einzigen Befehl mithilfe von az webapp up. Führen Sie den Befehl im Stammverzeichnis Ihrer Web-App aus.
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
Weitere Informationen zu diesem Beispiel finden Sie in der Schnellstartanleitung: Bereitstellen einer Python-Web-App (Django oder Flask) für Azure-App Service.
Beachten Sie, dass Sie für einen Teil Ihres Azure-Workflows auch die Azure CLI aus einer Azure Cloud Shell verwenden können. Azure Cloud Shell ist eine interaktive, authentifizierte, über den Browser zugängliche Shell für die Verwaltung von Azure-Ressourcen.
Azure SDK-Schlüsselpakete
In Ihren Python-Web-Apps können Sie programmgesteuert auf Azure-Dienste verweisen, indem Sie das Azure SDK für Python verwenden. Dieses SDK wird ausführlich im Abschnitt Verwenden der Azure-Bibliotheken (SDK) für Python behandelt. In diesem Abschnitt Erwähnung einige wichtige Pakete des SDK, die Sie in der Webentwicklung verwenden werden. Außerdem zeigen wir ein Beispiel für die bewährte Methode für die Authentifizierung Ihres Codes mit Azure-Ressourcen.
Im Folgenden finden Sie einige der Pakete, die häufig in der Web-App-Entwicklung verwendet werden. Sie können Pakete in Ihrer virtuellen Umgebung direkt mit pip
. Oder fügen Sie den Namen des Python-Paketindex (Pypi) in Die Datei "requirements.txt " ein.
SDK-Dokumente | Installieren | Python-Paketindex |
---|---|---|
Azure-Identität | pip install azure-identity |
azure-identity |
Azure-Speicherblobs | pip install azure-storage-blob |
Azure-storage-blob |
Azure Cosmos DB | pip install azure-cosmos |
Azure-Cosmos |
Azure Key Vault Secrets | pip install azure-keyvault-secrets |
azure-keyvault-secrets |
Das Azure-Identity-Paket ermöglicht Es Ihrer Web-App, sich mit Microsoft Entra ID zu authentifizieren. Für die Authentifizierung in Ihrem Web App-Code wird empfohlen, die DefaultAzureCredential im azure-identity
Paket zu verwenden. Hier ist ein Beispiel für den Zugriff auf Azure Storage. Das Muster ist für andere Azure-Ressourcen ähnlich.
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
azure_credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(
account_url=account_url,
credential=azure_credential)
Dies DefaultAzureCredential
sucht an vordefinierten Speicherorten nach Kontoinformationen, z. B. in Umgebungsvariablen oder aus der Azure CLI-Anmeldung. Ausführliche Informationen zur DefaultAzureCredential
Logik finden Sie unter Authentifizieren von Python-Apps für Azure-Dienste mithilfe des Azure SDK für Python.
Python-basierte Webframeworks
Bei der Entwicklung von Python Web App arbeiten Sie häufig mit Python-basierten Webframeworks. Diese Frameworks bieten Funktionen wie Seitenvorlagen, Sitzungsverwaltung, Datenbankzugriff und einfachen Zugriff auf HTTP-Anforderungs- und Antwortobjekte. Mit Frameworks können Sie vermeiden, dass Sie das Rad für allgemeine Funktionen neu erfinden müssen.
Drei gängige Python-Webframeworks sind Django, Flask oder FastAPI. Diese und andere Webframeworks können mit Azure verwendet werden.
Nachfolgend finden Sie ein Beispiel dafür, wie Sie schnell mit diesen Frameworks lokal beginnen können. Wenn Sie diese Befehle ausführen, erhalten Sie eine Anwendung, wenn auch eine einfache Anwendung, die in Azure bereitgestellt werden könnte. Führen Sie diese Befehle in einer virtuellen Umgebung aus.
Schritt 1: Laden Sie die Frameworks mit Pip herunter.
Schritt 2: Erstellen einer Hello World-App.
Erstellen Sie ein Beispielprojekt mit dem Befehl "django-admin startproject ". Das Projekt enthält eine manage.py Datei, die der Einstiegspunkt für die Ausführung der App ist.
django-admin startproject hello_world
Schritt 3: Führen Sie den Code lokal aus.
Django verwendet WSGI, um die App auszuführen.
python hello_world\manage.py runserver
Schritt 4: Durchsuchen sie die Hello World-App.
Fügen Sie nun eine Datei "requirements.txt " hinzu, und dann können Sie die Web-App in Azure bereitstellen oder mit Docker containern und dann bereitstellen.