Konfigurera din lokala miljö för att distribuera Python-webbappar i Azure

Den här artikeln beskriver hur du konfigurerar din lokala miljö för att utveckla Python-webbappar och distribuera dem till Azure. Din webbapp kan vara ren Python eller använda något av de vanliga Python-baserade webbramverken som Django, Flask eller FastAPI.

Python-webbappar som utvecklats lokalt kan distribueras till tjänster som Azure App Service, Azure Container Apps eller Azure Static Web Apps. Det finns många alternativ för distribution. För App Service-distribution kan du till exempel välja att distribuera från kod, en Docker-container eller en statisk webbapp. Om du distribuerar från kod kan du distribuera med Visual Studio Code, med Azure CLI, från en lokal Git-lagringsplats eller med GitHub-åtgärder. Om du distribuerar i en Docker-container kan du göra det från Azure Container Registry, Docker Hub eller ett privat register.

Innan du fortsätter med den här artikeln rekommenderar vi att du läser Konfigurera utvecklingsmiljön för vägledning om hur du konfigurerar utvecklingsmiljön för Python och Azure. Nedan går vi igenom konfiguration och konfiguration som är specifik för Utveckling av Python-webbappar.

När du har konfigurerat din lokala miljö för utveckling av Python-webbappar är du redo att ta itu med följande artiklar:

Arbeta med Visual Studio Code

Visual Studio Code integrated development environment (IDE) är ett enkelt sätt att utveckla Python-webbappar och arbeta med Azure-resurser som webbappar använder.

Dricks

Kontrollera att Python-tillägget är installerat. En översikt över hur du arbetar med Python i VS Code finns i Komma igång med Python i VS Code.

I VS Code arbetar du med Azure-resurser via VS Code-tillägg. Du kan installera tillägg från tilläggsvyn eller tangentkombinationen Ctrl+Skift+X. För Python-webbappar kommer du förmodligen att arbeta med ett eller flera av följande tillägg:

  • Med Azure App Service-tillägget kan du interagera med Azure App Service inifrån Visual Studio Code. App Service tillhandahåller fullständigt hanterad värd för webbprogram, inklusive webbplatser och webb-API:er.

  • Med tillägget Azure Static Web Apps kan du skapa Azure Static Web Apps direkt från VS Code. Static Web Apps är serverlös och ett bra val för värdtjänster för statiskt innehåll.

  • Om du planerar att arbeta med containrar installerar du:

  • Det finns andra tillägg som Azure Storage, Azure Databases och Azure Resources-tillägg . Du kan alltid lägga till dessa och andra tillägg efter behov.

Tillägg i Visual Studio Code är tillgängliga som förväntat i ett typiskt IDE-gränssnitt och med omfattande nyckelordsstöd med hjälp av VS Code-kommandopaletten. Om du vill komma åt kommandopaletten använder du tangentkombinationen Ctrl+Skift+P. Kommandopaletten är ett bra sätt att se alla möjliga åtgärder som du kan vidta för en Azure-resurs. Skärmbilden nedan visar några av åtgärderna för App Service.

A screenshot of the Visual Studio Code command palette for App Service.

Arbeta med Dev Containers i Visual Studio Code

Python-utvecklare förlitar sig ofta på virtuella miljöer för att skapa en isolerad och fristående miljö för ett visst projekt. Med virtuella miljöer kan utvecklare hantera beroenden, paket och Python-versioner separat för varje projekt, vilket undviker konflikter mellan olika projekt som kan kräva olika paketversioner.

Även om det finns populära alternativ i Python för att hantera miljöer som virtualenv eller venv, kan du använda en Docker-container som en fullständig containermiljö i Visual Studio Code Dev Container-tillägget (baserat på den öppna Dev Container-specifikationen). Det gör det möjligt för utvecklare att definiera en konsekvent och lätt reproducerbar verktygskedja med alla nödvändiga verktyg, beroenden och tillägg som är förkonfigurerade. Det innebär att om du har systemkrav, gränssnittskonfigurationer eller använder andra språk helt kan du använda en Dev Container för att explicit konfigurera alla de delar av projektet som kan finnas utanför en grundläggande Python-miljö.

En utvecklare kan till exempel konfigurera en enda Dev Container för att inkludera allt som behövs för att arbeta med ett projekt, inklusive en PostgreSQL-databasserver tillsammans med projektdatabasen och exempeldata, en Redis-server, Nginx, frontend-kod, klientbibliotek som React och så vidare. Dessutom skulle containern innehålla projektkoden, Python-körningen och alla Python-projektberoenden med rätt versioner. Slutligen kan containern ange att Visual Studio Code-tillägg ska installeras så att hela teamet har samma tillgängliga verktyg. Så när en ny utvecklare ansluter till teamet är hela miljön, inklusive verktyg, beroenden och data, redo att klonas till den lokala datorn, och de kan börja arbeta omedelbart.

Se Utveckla i en container.

Arbeta med Visual Studio 2022

Visual Studio 2022 är en komplett integrerad utvecklingsmiljö (IDE) med stöd för Utveckling av Python-program och många inbyggda verktyg och tillägg för åtkomst och distribution till Azure-resurser. De flesta dokumentationer för att skapa Python-webbappar i Azure fokuserar på att använda Visual Studio Code, men Visual Studio 2022 är ett bra alternativ om du redan har installerat det, men du är bekväm med att använda det och använder det för .NET- eller C++-projekt.

  • Mer information finns i Visual Studio | Python-dokumentation för all dokumentation som rör användning av Python i Visual Studio 2022.

  • Installationssteg finns i Installera Python-stöd i Visual Studio som vägleder dig genom stegen för att installera Python-arbetsbelastningen i Visual Studio 2022.

  • Allmänt arbetsflöde för användning av Python för webbutveckling finns i Snabbstart: Skapa din första Python-webbapp med Visual Studio. Den här artikeln är användbar för att förstå hur du skapar ett Python-webbprogram från grunden (men inkluderar inte distribution till Azure).

  • Information om hur du använder Visual Studio 2022 för att hantera Azure-resurser och distribuera till Azure finns i Azure Development med Visual Studio. Även om mycket av dokumentationen här specifikt nämner .NET, fungerar verktygen för att hantera Azure-resurser och distribuera till Azure på samma sätt oavsett programmeringsspråk.

  • När det inte finns något inbyggt verktyg tillgängligt i Visual Studio 2022 för en viss Azure-hanterings- eller distributionsuppgift kan du alltid använda Azure CLI-kommandon.

Arbeta med andra IDE:er

Om du arbetar i en annan IDE som inte har uttryckligt stöd för Azure kan du använda Azure CLI för att hantera Azure-resurser. I skärmbilden nedan är en enkel Flask-webbapp öppen i PyCharm IDE. Webbappen kan distribueras till en Azure App Service med hjälp av az webapp up kommandot . I skärmbilden körs CLI-kommandot i den inbäddade PyCharm-terminalemulatorn. Om din IDE inte har någon inbäddad emulator kan du använda valfri terminal och samma kommando. Azure CLI måste vara installerat på datorn och vara tillgängligt i båda fallen.

A screenshot of the PyCharm IDE with an Azure CLI command deploying a web app.

Azure CLI-kommandon

När du arbetar lokalt med webbappar med hjälp av Azure CLI-kommandona arbetar du vanligtvis med följande kommandon:

Kommando beskrivning
az webapp Hanterar webbappar. Innehåller de underkommandon som skapas för att skapa en webbapp och upp till att skapa och distribuera från en lokal arbetsyta
az container app Hanterar Azure Container Apps.
az staticwebapp Hanterar Azure Static Web Apps.
az group Hanterar resursgrupper och malldistributioner. Använd underkommandot skapa till en resursgrupp för att placera dina Azure-resurser i.
az appservice Hanterar App Service-planer.
az config Hanterad Azure CLI-konfiguration. Om du vill spara tangenttryckningar kan du definiera en standardplats eller resursgrupp som andra kommandon använder automatiskt.

Här är ett exempel på ett Azure CLI-kommando för att skapa en webbapp och associerade resurser och distribuera den till Azure i ett kommando med az webapp up. Kör kommandot i webbappens rotkatalog.

az webapp up \
    --runtime PYTHON:3.9 \
    --sku B1 \
    --logs

Mer information om det här exemplet finns i Snabbstart: Distribuera en Python-webbapp (Django eller Flask) till Azure App Service.

Tänk på att för vissa av dina Azure-arbetsflöden kan du även använda Azure CLI från ett Azure Cloud Shell. Azure Cloud Shell är ett interaktivt autentiserat gränssnitt för hantering av Azure-resurser som kan nås via webbläsare.

Azure SDK-nyckelpaket

I dina Python-webbappar kan du referera programmatiskt till Azure-tjänster med hjälp av Azure SDK för Python. Denna SDK beskrivs utförligt i avsnittet Använda Azure-bibliotek (SDK) för Python. I det här avsnittet ska vi kort nämna några viktiga paket i SDK:et som du ska använda i webbutveckling. Och vi visar ett exempel på bästa praxis för att autentisera din kod med Azure-resurser.

Nedan visas några av de paket som ofta används i webbappsutveckling. Du kan installera paket i din virtuella miljö direkt med pip. Eller placera Python-paketindexnamnet (Pypi) i filen requirements.txt .

SDK-dokument Installera Python-paketindex
Azure Identity pip install azure-identity azure-identity
Azure Storage-blobar pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Azure Key Vault-hemligheter pip install azure-keyvault-secrets azure-keyvault-secrets

Med azure-identity-paketet kan din webbapp autentiseras med Microsoft Entra-ID. För autentisering i webbappens kod rekommenderar vi att du använder StandardAzureCredential i azure-identity paketet. Här är ett exempel på hur du får åtkomst till Azure Storage. Mönstret liknar andra Azure-resurser.

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)

Kommer DefaultAzureCredential att titta på fördefinierade platser för kontoinformation, till exempel i miljövariabler eller från Azure CLI-inloggningen. Detaljerad information om logiken finns i Autentisera DefaultAzureCredential Python-appar till Azure-tjänster med hjälp av Azure SDK för Python.

Python-baserade webbramverk

I Utveckling av Python-webbappar arbetar du ofta med Python-baserade webbramverk. Dessa ramverk tillhandahåller funktioner som sidmallar, sessionshantering, databasåtkomst och enkel åtkomst till HTTP-begärande- och svarsobjekt. Med ramverk kan du undvika behovet av att behöva återuppfinna hjulet för vanliga funktioner.

Tre vanliga Python-webbramverk är Django, Flask eller FastAPI. Dessa och andra webbramverk kan användas med Azure.

Nedan visas ett exempel på hur du kan komma igång snabbt med dessa ramverk lokalt. När du kör de här kommandona får du ett program, även om det är ett enkelt program som kan distribueras till Azure. Kör dessa kommandon i en virtuell miljö.

Steg 1: Ladda ned ramverken med pip.

pip install Django

Steg 2: Skapa en hello world-app.

Skapa ett exempelprojekt med hjälp av kommandot django-admin startproject . Projektet innehåller en manage.py fil som är startpunkten för att köra appen.

django-admin startproject hello_world

Steg 3: Kör koden lokalt.

Django använder WSGI för att köra appen.

python hello_world\manage.py runserver

Steg 4: Bläddra i hello world-appen.

http://127.0.0.1:8000/

Nu lägger du till en requirements.txt-fil och sedan kan du distribuera webbappen till Azure eller containerisera den med Docker och sedan distribuera den.

Nästa steg