Condividi tramite


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, Flasko FastAPI.

Le app Web Python sviluppate localmente possono essere distribuite in servizi come Servizio app di Azure, App per contenitori di Azure, o App Web statiche di Azure. Sono disponibili molte opzioni per la distribuzione. Ad esempio, per la distribuzione del servizio app, è 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 esaminare il 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

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

Suggerimento

Assicurati di avere installata 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 Estensioni Visualizzazione 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 Azure App Service consente di interagire con Azure App Service all'interno di Visual Studio Code. Il servizio app offre un 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. Static Web Apps è serverless e un'ottima scelta per l'hosting di contenuti statici.

  • Se si prevede di usare i contenitori, installare:

    • L'estensione Docker per costruire e usare i container in locale. Ad esempio, è possibile eseguire un'app Web Python in contenitori nel servizio app di Azure usando App Web per contenitori.

    • L'estensione Azure Container Apps per creare e distribuire applicazioni containerizzate direttamente da Visual Studio Code.

  • Sono disponibili altre estensioni, ad esempio Archiviazione di Azure, Database di Azuree estensioni 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 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. L'immagine sottostante mostra alcune delle azioni per il Servizio App.

Un'istantanea della palette comandi di Visual Studio Code per 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 ci sono opzioni popolari in Python per la gestione di ambienti come o , l'estensione Dev Container di Visual Studio Code(basata sulla specifica open Dev Container ) consente di usare un contenitore Docker come ambiente containerizzato completo. Consente agli sviluppatori di definire una toolchain coerente e facilmente riproducibile con tutti gli strumenti, le dipendenze e le estensioni necessari preconfigurati. 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 in modo esplicito 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 lo sviluppo di app Web Python in Azure è incentrata sull'uso di Visual Studio Code, Visual Studio 2022 è un'ottima opzione se lo hai già installato, ti trovi a tuo agio nell'utilizzarlo e lo stai usando per progetti .NET o C++.

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 di Azure usando il comando az webapp up. Nel screenshot, il comando CLI viene eseguito nel terminale emulatore integrato di 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.

Screenshot dell'IDE PyCharm con un comando dell'interfaccia della riga di comando di Azure che distribuisce un'app Web.

Comandi CLI di Azure

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

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

Di seguito è riportato un comando di esempio di Azure CLI per creare un'app Web e le relative risorse associate e distribuirla su Azure in un unico passaggio utilizzando az webapp up. Eseguire il comando nella directory radice della tua 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) nel servizio app di Azure.

Tieni presente che puoi anche usare l'interfaccia della riga di comando di Azure da un Azure Cloud Shellper alcuni dei tuoi flussi di lavoro di Azure. Azure Cloud Shell è una shell interattiva, autenticata e 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
Azure Identity pip install azure-identity azure-identity
BLOB di Archiviazione di Azure pip install azure-storage-blob archiviazione-blob-di-azure
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 alla web app di eseguire l'autenticazione con Microsoft Entra ID. Per l'autenticazione nel codice dell'applicazione web, si raccomanda di usare il DefaultAzureCredential nel pacchetto azure-identity. Ecco un esempio di come accedere ad Azure Storage. 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)

Il DefaultAzureCredential cercherà nelle posizioni predefinite le informazioni sull'account, ad esempio nelle variabili di ambiente o nell'accesso dalla CLI di Azure. Per informazioni approfondite sulla logica di DefaultAzureCredential, vedere Autenticare le app Python nei servizi di Azure usando Azure SDK per Python.

Framework basati su Python per il web

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, Flasko 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 utilizzando il comando django-admin startproject . 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 containerizzarla con Docker.

Passaggi successivi