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, um Python -Web-Apps zu entwickeln und sie in Azure bereitzustellen. Ihre Web-App kann reine Python sein oder eines der gängigen Python-basierten Webframeworks wie Django, Flaskoder FastAPIverwenden.
Python-Web-Apps, die lokal entwickelt wurden, können für Dienste wie Azure App Service, Azure Container Appsoder Azure Static Web Appsbereitgestellt werden. Es gibt viele Optionen für die Bereitstellung. Zum Beispiel können Sie für die Bereitstellung eines App Service wählen, ob Sie aus Code, einem Docker-Container oder einer Static Web App bereitstellen möchten. Wenn Sie aus Code bereitstellen, können Sie dies mit Visual Studio Code, über die Azure CLI, aus einem lokalen Git-Repository oder mit GitHub Actions tun. Wenn Sie in einem Docker-Container bereitstellen, können Sie dies aus der Azure Container Registry, Docker Hub oder einem privaten Repository tun.
Bevor Sie mit diesem Artikel fortfahren, empfehlen wir Ihnen, den Abschnitt Einrichten Ihrer Entwicklungsumgebung zu lesen, um Anleitungen zum Einrichten Ihrer Entwicklungsumgebung für Python und Azure zu erhalten. Im Folgenden wird die Einrichtung und Konfiguration für die Entwicklung von Python-Web-Apps erläutert.
Nachdem Sie Ihre lokale Entwicklungsumgebung für die Entwicklung von Python-Web-Apps eingerichtet haben, können Sie diese Artikel angehen:
- 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 Visual Studio Code integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) 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 Getting Started with Python in VS Code.
In VS Code arbeiten Sie mit Azure-Ressourcen über VS Code-Erweiterungen. Sie können Erweiterungen aus der Erweiterungen-Ansicht oder über die Tastenkombination Strg+Shift+X installieren. Bei Python-Web-Apps arbeiten Sie wahrscheinlich mit einer oder mehreren der folgenden Erweiterungen:
Die Azure App Service Erweiterung ermöglicht Ihnen die Interaktion mit Azure App Service innerhalb von Visual Studio Code. Der App-Dienst bietet vollständig verwaltetes Hosting für Webanwendungen, einschließlich Websites und Web-APIs.
Die Azure Static Web Apps-Erweiterung ermöglicht es Ihnen, Azure Static Web Apps direkt aus VS Code zu erstellen. Statische Web-Apps sind serverlos und eine gute Wahl für das Hosting statischer Inhalte.
Wenn Sie die Arbeit mit Containern planen, installieren Sie Folgendes:
Die Docker-Erweiterung ermöglicht es Ihnen, Container lokal zu erstellen und damit zu arbeiten. Sie können beispielsweise eine containerisierte Python-Web-App im Azure App Service mit Web Apps für Containerausführen.
Die Azure Container Apps-Erweiterung ermöglicht es Ihnen, containerisierte Apps direkt aus Visual Studio Code zu erstellen und bereitzustellen.
Es gibt weitere Erweiterungen wie den Azure Storage, Azure Databasesund 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 umfassender Schlüsselwortunterstützung über die VS Code-Befehlspaletteverfügbar. Um die Befehlspalette aufzurufen, verwenden Sie die Tastenkombination Strg+Shift+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, ermöglicht Ihnen die Visual Studio Code Dev Container Erweiterung (basierend auf der open Dev Container Spezifikation), einen Docker-Container zu verwenden, der als voll funktionsfähige containerisierte Umgebung dient. Sie ermöglicht Entwicklern die Definition einer konsistenten und leicht reproduzierbaren Toolkette mit allen erforderlichen Tools, Abhängigkeiten und vorkonfigurierten Erweiterungen. Dies bedeutet, dass Sie bei Systemanforderungen, Shell-Konfigurationen oder der Verwendung anderer Sprachen einen Dev-Container einsetzen können, um explizit alle Teile Ihres Projekts 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 Entwicklung 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 und die Bereitstellung auf 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.
Unter Visual Studio | Python-Dokumentation finden Sie die gesamte Dokumentation zur Nutzung von Python in Visual Studio 2022.
Schritte zum Einrichten finden Sie unter Installieren von 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 unter Schnellstart: Erstellen Ihrer ersten Python-Web-App mit Visual Studio. Dieser Artikel ist nützlich, um zu verstehen, wie man eine Python-Webanwendung von Grund auf entwickelt, enthält jedoch nicht die Bereitstellung in Azure.
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 .NET erwähnt, funktioniert das Tool für die Verwaltung 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 jederzeit Azure CLI-Befehleverwenden.
Mit anderen IDEs arbeiten
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 Befehls az webapp up
in einem Azure App Service 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. Beinhaltet die Unterbefehle create, um eine Web-App zu erstellen, und up, um aus einem lokalen Arbeitsbereich zu erstellen und bereitzustellen. |
az container app | Verwaltet Azure-Container-Apps. |
az staticwebapp | Verwaltet statische Azure Web Apps. |
az group | Verwaltet Ressourcengruppen und Vorlagenbereitstellungen. Verwenden Sie den Unterbefehl create, um eine Ressourcengruppe zu erstellen, in der Sie Ihre Azure-Ressourcen ablegen können. |
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, um eine Web-App und zugehörige Ressourcen zu erstellen und sie in einem Schritt mit az webapp up in Azure bereitzustellen. 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 unter Schnellstart: Bereitstellen einer Python-Web-App (Django oder Flask) in Azure App Service.
Beachten Sie, dass Sie für einen Teil Ihres Azure-Workflows auch die Azure CLI aus einer Azure Cloud Shellverwenden können. Azure Cloud Shell ist eine interaktive, authentifizierte, browserfreundliche Shell zum Verwalten 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 Pythonverwenden. Dieses SDK wird ausführlich im Abschnitt Verwenden der Azure-Bibliotheken (SDK) für Pythonbehandelt. In diesem Abschnitt werden einige wichtige Pakete des SDK kurz erwähnt, die Sie in der Webentwicklung verwenden. 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
installieren. Oder setzen Sie den Namen des Python-Paketindexes (Pypi) in Ihre requirements.txt-Datei.
SDK-Dokumente | Installieren | Python-Paketindex |
---|---|---|
Azure Identity | pip install azure-identity |
azure-identity |
Azure Storage Blobs | 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 Paket azure-identity ermöglicht es Ihrer Web-App, sich bei Microsoft Entra ID zu authentifizieren. Für die Authentifizierung in Ihrem Web-App-Code wird empfohlen, den DefaultAzureCredential aus dem azure-identity
Package 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)
Das DefaultAzureCredential
sucht an vordefinierten Orten nach Kontoinformationen, beispielsweise 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 Web-Frameworks
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. Frameworks ermöglichen es Ihnen, die Notwendigkeit zu vermeiden, das Rad für grundlegende Funktionen neu erfinden zu müssen.
Drei gängige Python-Webframeworks sind Django, Flaskoder 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 innerhalb 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: Die Hello World-App durchsuchen.
Fügen Sie an diesem Punkt eine requirements.txt Datei hinzu, und dann können Sie die Web-App in Azure bereitstellen oder sie mit Docker containern und dann bereitstellen.