Uw lokale omgeving configureren voor het implementeren van Python-web-apps in Azure
Dit artikel begeleidt u bij het instellen van uw lokale omgeving voor het ontwikkelen van Python-web-apps en het implementeren ervan in Azure. Uw web-app kan puur Python zijn of een van de algemene python-webframeworks gebruiken, zoals Django, Flask of FastAPI.
Python-web-apps die lokaal zijn ontwikkeld, kunnen worden geïmplementeerd in services zoals Azure-app Service, Azure Container Apps of Azure Static Web Apps. Er zijn veel opties voor implementatie. Voor de implementatie van App Service kunt u bijvoorbeeld kiezen uit code, een Docker-container of een statische web-app. Als u implementeert vanuit code, kunt u implementeren met Visual Studio Code, met de Azure CLI, vanuit een lokale Git-opslagplaats of met GitHub-acties. Als u in een Docker-container implementeert, kunt u dit doen vanuit Azure Container Registry, Docker Hub of een persoonlijk register.
Voordat u verdergaat met dit artikel, raden we u aan om de ontwikkelomgeving in te stellen voor hulp bij het instellen van uw ontwikkelomgeving voor Python en Azure. Hieronder bespreken we de installatie en configuratie die specifiek zijn voor de ontwikkeling van Python-web-apps.
Nadat u de lokale omgeving hebt ingesteld voor de ontwikkeling van Python-web-apps, bent u klaar om deze artikelen aan te pakken:
- Quickstart: Een Python-web-app (Django of Flask) maken in Azure-app Service.
- Zelfstudie: Een Python-web-app (Django of Flask) implementeren met PostgreSQL in Azure
- Een Flask-web-app maken en implementeren in Azure met een door het systeem toegewezen beheerde identiteit
Werken met Visual Studio Code
De IDE (Integrated Development Environment) van Visual Studio Code is een eenvoudige manier om Python-web-apps te ontwikkelen en te werken met Azure-resources die web-apps gebruiken.
Tip
Zorg ervoor dat u de Python-extensie hebt geïnstalleerd. Zie Aan de slag met Python in VS Code voor een overzicht van het werken met Python in VS Code.
In VS Code werkt u met Azure-resources via VS Code-extensies. U kunt extensies installeren vanuit de weergave Extensies of de toetsencombinatie Ctrl+Shift+X. Voor Python-web-apps werkt u waarschijnlijk met een of meer van de volgende extensies:
Met de Azure-app Service-extensie kunt u communiceren met Azure-app Service vanuit Visual Studio Code. App Service biedt volledig beheerde hosting voor webtoepassingen, waaronder websites en web-API's.
Met de Azure Static Web Apps-extensie kunt u Azure Static Web Apps rechtstreeks vanuit VS Code maken. Static Web Apps is serverloos en een goede keuze voor het hosten van statische inhoud.
Als u van plan bent om met containers te werken, installeert u het volgende:
De Docker-extensie voor het lokaal bouwen en werken met containers. U kunt bijvoorbeeld een in een container geplaatste Python-web-app uitvoeren in Azure-app Service met behulp van Web Apps for Containers.
De Azure Container Apps-extensie voor het maken en implementeren van apps in containers rechtstreeks vanuit Visual Studio Code.
Er zijn andere extensies, zoals azure Storage, Azure Databases en Azure Resources-extensies . U kunt deze en andere extensies altijd indien nodig toevoegen.
Extensies in Visual Studio Code zijn toegankelijk zoals u zou verwachten in een typische IDE-interface en met uitgebreide ondersteuning voor trefwoorden met behulp van het OPDRACHTENpalet van VS Code. Gebruik de toetsencombinatie Ctrl+Shift+P om het opdrachtenpalet te openen. Het opdrachtenpalet is een goede manier om alle mogelijke acties te bekijken die u op een Azure-resource kunt uitvoeren. In de onderstaande schermopname ziet u enkele acties voor App Service.
Werken met Dev Containers in Visual Studio Code
Python-ontwikkelaars vertrouwen vaak op virtuele omgevingen om een geïsoleerde en zelfstandige omgeving te maken voor een specifiek project. Met virtuele omgevingen kunnen ontwikkelaars afhankelijkheden, pakketten en Python-versies afzonderlijk beheren voor elk project, waardoor conflicten tussen verschillende projecten worden vermeden die mogelijk verschillende pakketversies vereisen.
Hoewel er populaire opties beschikbaar zijn in Python voor het beheren van omgevingen zoals virtualenv
of, kunt u met de Dev Container-extensie van Visual Studio Code (op basis van de open Dev Container-specificatie) een Docker-container gebruiken als een volledige containeromgevingvenv
. Hiermee kunnen ontwikkelaars een consistente en eenvoudig reproduceerbare hulpprogrammaketen definiëren met alle benodigde hulpprogramma's, afhankelijkheden en vooraf geconfigureerde extensies. Dit betekent dat als u systeemvereisten, shellconfiguraties of andere talen gebruikt, u een Dev-container kunt gebruiken om al deze onderdelen van uw project expliciet te configureren die zich buiten een eenvoudige Python-omgeving kunnen bevinden.
Een ontwikkelaar kan bijvoorbeeld één Dev-container configureren om alles op te nemen dat nodig is om aan een project te werken, inclusief een PostgreSQL-databaseserver, samen met de projectdatabase en voorbeeldgegevens, een Redis-server, Nginx, front-endcode, clientbibliotheken zoals React, enzovoort. Bovendien bevat de container de projectcode, de Python-runtime en alle Python-projectafhankelijkheden met de juiste versies. Ten slotte kan de container Visual Studio Code-extensies opgeven die moeten worden geïnstalleerd, zodat het hele team dezelfde hulpprogramma's beschikbaar heeft. Dus wanneer een nieuwe ontwikkelaar lid wordt van het team, is de hele omgeving, inclusief hulpprogramma's, afhankelijkheden en gegevens, klaar om te worden gekloond naar hun lokale computer en kunnen ze meteen aan de slag gaan.
Zie Ontwikkelen in een container.
Werken met Visual Studio 2022
Visual Studio 2022 is een volledige IDE (Integrated Development Environment) met ondersteuning voor het ontwikkelen van Python-toepassingen en veel ingebouwde hulpprogramma's en extensies voor toegang tot en implementatie in Azure-resources. Hoewel de meeste documentatie voor het bouwen van Python-web-apps op Azure gericht is op het gebruik van Visual Studio Code, is Visual Studio 2022 een uitstekende optie als u deze al hebt geïnstalleerd, bent u vertrouwd met het gebruik ervan en gebruikt u deze voor .NET- of C++-projecten.
Zie In het algemeen Visual Studio | Python-documentatie voor alle documentatie met betrekking tot het gebruik van Python in Visual Studio 2022.
Zie Python-ondersteuning installeren in Visual Studio, waarmee u de stappen voor het installeren van de Python-workload in Visual Studio 2022 doorloopt.
Zie Quickstart: Uw eerste Python-web-app maken met Visual Studio voor algemene werkstroom voor het gebruik van Python voor webontwikkeling. Dit artikel is handig voor informatie over het bouwen van een volledig nieuwe Python-webtoepassing (maar bevat geen implementatie in Azure).
Zie Azure Development met Visual Studio 2022 voor het gebruik van Visual Studio 2022 voor het beheren van Azure-resources en implementeren in Azure. Hoewel veel van de documentatie hier specifiek .NET vermeldt, werkt de hulpprogramma's voor het beheren van Azure-resources en implementeren in Azure hetzelfde, ongeacht de programmeertaal.
Wanneer er geen ingebouwd hulpprogramma beschikbaar is in Visual Studio 2022 voor een bepaalde Azure-beheer- of implementatietaak, kunt u altijd Azure CLI-opdrachten gebruiken.
Werken met andere IDE's
Als u in een andere IDE werkt die geen expliciete ondersteuning voor Azure heeft, kunt u de Azure CLI gebruiken om Azure-resources te beheren. In de onderstaande schermopname is een eenvoudige Flask-web-app geopend in de PyCharm IDE. De web-app kan worden geïmplementeerd in een Azure-app Service met behulp van de az webapp up
opdracht. In de schermopname wordt de CLI-opdracht uitgevoerd in de in PyCharm ingesloten terminalemulator. Als uw IDE geen ingesloten emulator heeft, kunt u een terminal en dezelfde opdracht gebruiken. De Azure CLI moet op uw computer zijn geïnstalleerd en in beide gevallen toegankelijk zijn.
Azure CLI-opdrachten
Wanneer u lokaal werkt met web-apps met behulp van de Azure CLI-opdrachten , werkt u meestal met de volgende opdrachten:
Opdracht | Beschrijving |
---|---|
az webapp | Hiermee beheert u web-apps. Bevat de subopdrachten die worden gemaakt voor het maken van een web-app en het maken en implementeren van een lokale werkruimte |
az container app | Beheert Azure Container Apps. |
az staticwebapp | Beheert Azure Static Web Apps. |
az group | Beheert resourcegroepen en sjabloonimplementaties. Gebruik de subopdracht maken voor een resourcegroep om uw Azure-resources in te zetten. |
az appservice | Beheert App Service-plannen. |
az config | Beheerde Azure CLI-configuratie. Als u toetsaanslagen wilt opslaan, kunt u een standaardlocatie of resourcegroep definiëren die automatisch door andere opdrachten wordt gebruikt. |
Hier volgt een voorbeeld van een Azure CLI-opdracht om een web-app en bijbehorende resources te maken en deze in één opdracht te implementeren in Azure met behulp van az webapp up. Voer de opdracht uit in de hoofdmap van uw web-app.
az webapp up \
--runtime PYTHON:3.9 \
--sku B1 \
--logs
Zie Quickstart: Een Python-web-app (Django of Flask) implementeren in Azure-app Service voor meer informatie over dit voorbeeld.
Houd er rekening mee dat u voor een deel van uw Azure-werkstroom ook de Azure CLI kunt gebruiken vanuit een Azure Cloud Shell. Azure Cloud Shell is een interactieve, geverifieerde en vanuit de browser toegankelijke shell voor het beheer van Azure-resources.
Azure SDK-sleutelpakketten
In uw Python-web-apps kunt u programmatisch verwijzen naar Azure-services met behulp van de Azure SDK voor Python. Deze SDK wordt uitgebreid besproken in de sectie De Azure-bibliotheken (SDK) voor Python gebruiken. In deze sectie noemen we kort enkele belangrijke pakketten van de SDK die u gaat gebruiken in webontwikkeling. En we laten een voorbeeld zien van de best practice voor het verifiëren van uw code met Azure-resources.
Hieronder ziet u enkele van de pakketten die vaak worden gebruikt bij het ontwikkelen van web-apps. U kunt pakketten rechtstreeks in uw virtuele omgeving installeren met pip
. Of plaats de naam van de Python-pakketindex (Pypi) in het bestand requirements.txt .
SDK-documenten | Installeren | Python-pakketindex |
---|---|---|
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-geheimen | pip install azure-keyvault-secrets |
azure-keyvault-secrets |
Met het azure-identity-pakket kan uw web-app worden geverifieerd met Microsoft Entra-id. Voor verificatie in uw web-app-code is het raadzaam om de DefaultAzureCredential in het azure-identity
pakket te gebruiken. Hier volgt een voorbeeld van hoe u toegang krijgt tot Azure Storage. Het patroon is vergelijkbaar voor andere Azure-resources.
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)
Het DefaultAzureCredential
ziet er op vooraf gedefinieerde locaties voor accountgegevens, bijvoorbeeld in omgevingsvariabelen of vanuit de Azure CLI-aanmelding. Zie Python-apps verifiëren bij Azure-services met behulp van de Azure SDK voor Python voor Python voor uitgebreide informatie over de DefaultAzureCredential
logica.
Webframeworks op basis van Python
In de ontwikkeling van Python-web-apps werkt u vaak met op Python gebaseerde webframeworks. Deze frameworks bieden functionaliteit zoals paginasjablonen, sessiebeheer, databasetoegang en eenvoudige toegang tot HTTP-aanvraag- en antwoordobjecten. Met frameworks kunt u voorkomen dat u het wiel opnieuw moet uitvinden voor algemene functionaliteit.
Drie algemene Python-webframeworks zijn Django, Flask of FastAPI. Deze en andere webframeworks kunnen worden gebruikt met Azure.
Hieronder ziet u een voorbeeld van hoe u snel aan de slag kunt gaan met deze frameworks lokaal. Als u deze opdrachten uitvoert, krijgt u uiteindelijk een toepassing, hoewel dit een eenvoudige toepassing is die kan worden geïmplementeerd in Azure. Voer deze opdrachten uit in een virtuele omgeving.
Stap 1: Download de frameworks met pip.
Stap 2: Maak een hallo wereld-app.
Maak een voorbeeldproject met behulp van de opdracht django-admin startproject . Het project bevat een manage.py-bestand dat het toegangspunt is voor het uitvoeren van de app.
django-admin startproject hello_world
Stap 3: Voer de code lokaal uit.
Django gebruikt WSGI om de app uit te voeren.
python hello_world\manage.py runserver
Stap 4: Blader door de hallo wereld-app.
Voeg op dit moment een requirements.txt-bestand toe en vervolgens kunt u de web-app implementeren in Azure of deze in een container plaatsen met Docker en vervolgens implementeren.