Configurare l'ambiente locale per la distribuzione di app Web Python in Azure

Questo articolo illustra come configurare l'ambiente locale per sviluppare app Web Python e distribuirle in Azure. L'app Web può essere pura python o usare uno dei framework Web comuni basati su Python, ad esempio Django, Flask o FastAPI.

Le app Web Python sviluppate in locale possono essere distribuite in servizi come servizio app Azure, app Azure Container o App Web statiche di Azure. Sono disponibili molte opzioni per la distribuzione. Ad esempio, per servizio app distribuzione, è possibile scegliere di eseguire la distribuzione dal codice, da un contenitore Docker o da un'app Web statica. Se si esegue la distribuzione dal codice, è possibile eseguire la distribuzione con Visual Studio Code con l'interfaccia della riga di comando di Azure, da un repository Git locale o con GitHub actions. Se si esegue la distribuzione in un contenitore Docker, è possibile farlo da Registro Azure Container, dall'hub Docker o da qualsiasi registro privato.

Prima di continuare con questo articolo, è consigliabile vedere Configurare l'ambiente di sviluppo per indicazioni sulla configurazione dell'ambiente di sviluppo per Python e Azure. Di seguito verrà descritta l'installazione e la configurazione specifiche per lo sviluppo di app Web Python.

Dopo aver configurato l'ambiente locale per lo sviluppo di app Web Python, si sarà pronti per affrontare questi articoli:

Uso di Visual Studio Code

L'ambiente di sviluppo integrato (IDE) di Visual Studio Code è un modo semplice per sviluppare app Web Python e usare le risorse di Azure usate dalle app Web.

Suggerimento

Assicurarsi di avere installato l'estensione Python . Per una panoramica dell'uso di Python in VS Code, vedere Introduzione a Python in VS Code.

In VS Code si lavora con le risorse di Azure tramite le estensioni di VS Code. È possibile installare le estensioni dalla visualizzazione Estensioni o dalla combinazione di tasti CTRL+MAIUSC+X. Per le app Web Python, è probabile che si stia usando una o più delle estensioni seguenti:

  • L'estensione del servizio app Azure consente di interagire con app Azure Service dall'interno di Visual Studio Code. servizio app fornisce l'hosting completamente gestito per le applicazioni Web, inclusi siti Web e API Web.

  • L'estensione App Web statiche di Azure consente di creare App Web statiche di Azure direttamente da VS Code. App Web statiche è serverless e una buona scelta per l'hosting di contenuto statico.

  • Se si prevede di usare i contenitori, installare:

    • Estensione Docker per compilare e usare i contenitori in locale. Ad esempio, è possibile eseguire un'app Web Python in contenitori in app Azure Servizio usando App Web per contenitori.

    • L'estensione App Contenitore di Azure per creare e distribuire app in contenitori direttamente da Visual Studio Code.

  • Sono disponibili altre estensioni, ad esempio le estensioni Archiviazione di Azure, Database di Azure e Risorse di Azure. È sempre possibile aggiungere queste estensioni e altre estensioni in base alle esigenze.

Le estensioni in Visual Studio Code sono accessibili come previsto in un'interfaccia IDE tipica e con supporto di parole chiave avanzate usando il riquadro comandi di VS Code. Per accedere al riquadro comandi, usare la combinazione di tasti CTRL+MAIUSC+P. Il riquadro comandi è un buon modo per visualizzare tutte le possibili azioni che è possibile eseguire su una risorsa di Azure. Lo screenshot seguente mostra alcune delle azioni per servizio app.

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

Uso dei contenitori di sviluppo in Visual Studio Code

Gli sviluppatori Python spesso si basano su ambienti virtuali per creare un ambiente isolato e autonomo per un progetto specifico. Gli ambienti virtuali consentono agli sviluppatori di gestire separatamente dipendenze, pacchetti e versioni python per ogni progetto, evitando conflitti tra progetti diversi che potrebbero richiedere versioni di pacchetti diverse.

Anche se in Python sono disponibili opzioni comuni per la gestione di ambienti come virtualenv o , l'estensione contenitore di sviluppo di Visual Studio Code (in base alla specifica open Dev Container) consente di usare un contenitore Docker come ambiente in contenitori venvcompleto. Consente agli sviluppatori di definire una toolchain coerente e facilmente riproducibile con tutti gli strumenti, le dipendenze e le estensioni necessari preconfigurato. Ciò significa che se si hanno requisiti di sistema, configurazioni della shell o si usano completamente altri linguaggi, è possibile usare un contenitore di sviluppo per configurare esplicitamente tutte le parti del progetto che potrebbero vivere all'esterno di un ambiente Python di base.

Ad esempio, uno sviluppatore può configurare un singolo contenitore di sviluppo in modo da includere tutti gli elementi necessari per lavorare in un progetto, inclusi un server di database PostgreSQL insieme al database di progetto e ai dati di esempio, un server Redis, Nginx, codice front-end, librerie client come React e così via. Inoltre, il contenitore conterrà il codice del progetto, il runtime Python e tutte le dipendenze del progetto Python con le versioni corrette. Infine, il contenitore può specificare le estensioni di Visual Studio Code da installare in modo che l'intero team disponga dello stesso strumento disponibile. Quindi, quando un nuovo sviluppatore si unisce al team, l'intero ambiente, inclusi strumenti, dipendenze e dati, è pronto per essere clonato nel computer locale e può iniziare subito a lavorare.

Vedere Sviluppo all'interno di un contenitore.

Uso di Visual Studio 2022

Visual Studio 2022 è un ambiente di sviluppo integrato completo con supporto per lo sviluppo di applicazioni Python e molte estensioni e strumenti predefiniti per accedere e distribuire alle risorse di Azure. Anche se la maggior parte della documentazione per la compilazione di app Web Python in Azure è incentrata sull'uso di Visual Studio Code, Visual Studio 2022 è un'ottima opzione se è già installata, è possibile usarla e usarla per i progetti .NET o C++.

  • In generale, vedere Visual Studio | Documentazione di Python per tutta la documentazione relativa all'uso di Python in Visual Studio 2022.

  • Per la procedura di installazione, vedere Installare il supporto python in Visual Studio che illustra i passaggi dell'installazione del carico di lavoro Python in Visual Studio 2022.

  • Per un flusso di lavoro generale sull'uso di Python per lo sviluppo Web, vedere Avvio rapido: Creare la prima app Web Python con Visual Studio. Questo articolo è utile per comprendere come creare un'applicazione Web Python da zero , ma non include la distribuzione in Azure.

  • Per l'uso di Visual Studio 2022 per gestire le risorse di Azure e distribuirlo in Azure, vedere Sviluppo di Azure con Visual Studio. Anche se gran parte della documentazione qui descrive in modo specifico .NET, gli strumenti per la gestione delle risorse di Azure e la distribuzione in Azure funzionano allo stesso modo indipendentemente dal linguaggio di programmazione.

  • Quando non è disponibile uno strumento predefinito in Visual Studio 2022 per una determinata attività di gestione o distribuzione di Azure, è sempre possibile usare i comandi dell'interfaccia della riga di comando di Azure.

Uso di altri IDE

Se si usa un altro IDE che non ha supporto esplicito per Azure, è possibile usare l'interfaccia della riga di comando di Azure per gestire le risorse di Azure. Nello screenshot seguente viene aperta una semplice app Web Flask nell'IDE PyCharm . L'app Web può essere distribuita in un servizio app Azure usando il az webapp up comando . Nello screenshot il comando dell'interfaccia della riga di comando viene eseguito nell'emulatore del terminale incorporato PyCharm. Se l'IDE non ha un emulatore incorporato, è possibile usare qualsiasi terminale e lo stesso comando. L'interfaccia della riga di comando di Azure deve essere installata nel computer ed essere accessibile in entrambi i casi.

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

Comandi dell'interfaccia della riga di comando di Azure

Quando si lavora in locale con le app Web usando i comandi dell'interfaccia della riga di comando di Azure , in genere si useranno i comandi seguenti:

Comando Descrizione
az webapp Gestisce le app Web. Include i sottocomandi creati per creare un'app Web e l'up per creare e distribuire da un'area di lavoro locale
az container app Gestisce le app contenitore di Azure.
az staticwebapp Gestisce App Web statiche di Azure.
az group Gestisce gruppi di risorse e distribuzioni di modelli. Usare il sottocomando creare in un gruppo di risorse per inserire le risorse di Azure.
az appservice Gestisce i piani di servizio app.
az config Configurazione dell'interfaccia della riga di comando di Azure gestita. Per salvare le sequenze di tasti, è possibile definire un percorso predefinito o un gruppo di risorse usato automaticamente da altri comandi.

Ecco un esempio di comando dell'interfaccia della riga di comando di Azure per creare un'app Web e le risorse associate e distribuirla in Azure in un comando usando az webapp up. Eseguire il comando nella directory radice dell'app Web.

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

Per altre informazioni su questo esempio, vedere Avvio rapido: Distribuire un'app Web Python (Django o Flask) in app Azure Servizio.

Tenere presente che per alcuni dei flussi di lavoro di Azure è anche possibile usare l'interfaccia della riga di comando di Azure da Azure Cloud Shell. Azure Cloud Shell è una shell interattiva autenticata accessibile dal browser per la gestione delle risorse di Azure.

Pacchetti chiave di Azure SDK

Nelle app Web Python è possibile fare riferimento a livello di codice ai servizi di Azure usando Azure SDK per Python. Questo SDK è illustrato in modo approfondito nella sezione Usare le librerie di Azure (SDK) per Python. In questa sezione verranno brevemente menzionati alcuni pacchetti chiave dell'SDK che verranno usati nello sviluppo Web. Verrà inoltre illustrato un esempio della procedura consigliata per l'autenticazione del codice con le risorse di Azure.

Di seguito sono riportati alcuni dei pacchetti comunemente usati nello sviluppo di app Web. È possibile installare i pacchetti nell'ambiente virtuale direttamente con pip. In alternativa, inserire il nome dell'indice del pacchetto Python (Pypi) nel file requirements.txt .

Documentazione dell'SDK Installare Indice del pacchetto Python
Identità di Azure pip install azure-identity azure-identity
BLOB di archiviazione di Azure: pip install azure-storage-blob azure-storage-blob
Azure Cosmos DB pip install azure-cosmos azure-cosmos
Segreti di Azure Key Vault pip install azure-keyvault-secrets azure-keyvault-secrets

Il pacchetto azure-identity consente all'app Web di eseguire l'autenticazione con Microsoft Entra ID. Per l'autenticazione nel codice dell'app Web, è consigliabile usare DefaultAzureCredential nel azure-identity pacchetto. Ecco un esempio di come accedere alle Archiviazione di Azure. Il modello è simile per altre risorse di Azure.

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)

Cercherà DefaultAzureCredential in posizioni predefinite le informazioni sull'account, ad esempio nelle variabili di ambiente o dall'accesso dell'interfaccia della riga di comando di Azure. Per informazioni approfondite sulla DefaultAzureCredential logica, vedere Autenticare le app Python nei servizi di Azure usando Azure SDK per Python.

Framework Web basati su Python

Nello sviluppo di app Web Python si usano spesso framework Web basati su Python. Questi framework forniscono funzionalità quali modelli di pagina, gestione delle sessioni, accesso al database e facile accesso agli oggetti richiesta e risposta HTTP. I framework consentono di evitare la necessità di reinventare la rotellina per le funzionalità comuni.

Tre framework Web Python comuni sono Django, Flask o FastAPI. Questi e altri framework Web possono essere usati con Azure.

Di seguito è riportato un esempio di come iniziare rapidamente a usare questi framework in locale. Eseguendo questi comandi, si otterrà un'applicazione, anche se semplice che potrebbe essere distribuita in Azure. Eseguire questi comandi all'interno di un ambiente virtuale.

Passaggio 1: Scaricare i framework con pip.

pip install Django

Passaggio 2: Creare un'app hello world.

Creare un progetto di esempio usando il comando startproject django-admin. Il progetto include un file manage.py che rappresenta il punto di ingresso per l'esecuzione dell'app.

django-admin startproject hello_world

Passaggio 3: Eseguire il codice in locale.

Django usa WSGI per eseguire l'app.

python hello_world\manage.py runserver

Passaggio 4: Esplorare l'app hello world.

http://127.0.0.1:8000/

A questo punto, aggiungere un file requirements.txt e quindi distribuire l'app Web in Azure o in contenitori con Docker e quindi distribuirla.

Passaggi successivi