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 Python web e distribuirle in Azure. L'app Web può essere pura Python o usare uno dei framework Web comuni basati su Python come Django, Flask o FastAPI.

È possibile distribuire Python app Web sviluppate localmente in servizi quali Azure App Service, Azure Container Apps o Azure Static Web Apps. 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 distribuisci dal codice, è possibile distribuire usando Visual Studio Code, Azure CLI, un repository Git locale o GitHub Actions. Se si esegue la distribuzione in un contenitore Docker, è possibile farlo da Azure Container Registry, Docker Hub o da qualsiasi registro privato.

Prima di continuare con questo articolo, vedere Configura l'ambiente di sviluppo per indicazioni sulla configurazione dell'ambiente di sviluppo per Python e Azure. Le sezioni seguenti illustrano 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, è possibile affrontare questi articoli:

Uso di Visual Studio Code

L'IDE (Integrated Development Environment) Visual Studio Code è un modo semplice per sviluppare app Web Python e usare Azure risorse usate dalle app Web.

Suggerimento

Assicurarsi di installare l'estensione Python. Per una panoramica dell'uso di Python in VS Code, vedere Introduzione alla Python in VS Code.

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

  • L'estensione Azure App Service consente di interagire con Azure App Service dall'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 Azure Static Web Apps consente di creare Azure Static Web Apps direttamente da VS Code. Static Web Apps è serverless e una buona scelta per l'hosting di contenuti statici.

  • 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 Azure App Service usando Web Apps per contenitori.

    • L'estensione Azure Container Apps per creare e distribuire app in contenitori direttamente da Visual Studio Code.

  • Altre estensioni includono le estensioni Azure Storage, Azure Databases e Azure Resources. È 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. È possibile usare il 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 Azure. Lo screenshot seguente mostra alcune delle azioni per il servizio app.

Uno screenshot della paletta comandi di Visual Studio Code per Servizio App.

Uso di contenitori di sviluppo in Visual Studio Code

Python gli sviluppatori 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 dipendenze, pacchetti e versioni Python separatamente per ogni progetto, evitando conflitti tra progetti diversi che potrebbero richiedere versioni di pacchetti diverse.

Sebbene siano disponibili opzioni comuni in Python per la gestione di ambienti come virtualenv o venv, L'estensione Visual Studio Code Dev Container (basata sulla specifica open Dev Container) consente di usare un contenitore Docker come ambiente in contenitori 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 dispone di 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 risiedere all'esterno di un ambiente di base Python.

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 di Python e tutte le dipendenze del progetto Python con le versioni corrette. Infine, il contenitore può specificare Visual Studio Code estensioni 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 (IDE) con supporto per lo sviluppo di applicazioni Python e molte estensioni e strumenti predefiniti per accedere e distribuire alle risorse Azure. Sebbene la maggior parte della documentazione per la compilazione di app Web Python su Azure sia incentrata sull'uso di Visual Studio Code, Visual Studio 2022 è un'ottima opzione se è già installata, è possibile usarla per progetti .NET o C++.

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

  • Per i passaggi di installazione, vedere Installare Python supporto 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 Quickstart: Creare la prima app Web Python usando 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 Azure Development with Visual Studio. Anche se gran parte della documentazione qui menzionata specificamente .NET, gli strumenti per la gestione delle risorse 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 Azure, è sempre possibile usare i comandi Azure CLI.

Uso di altri IDE

Se si lavora in un altro IDE che non dispone di supporto esplicito per Azure, usare il Azure CLI per gestire le risorse Azure. Nello screenshot seguente viene aperta una semplice app Web Flask nell'IDE PyCharm . È possibile distribuire l'app Web in un Azure App Service 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. Il Azure CLI deve essere installato nel computer ed essere accessibile in entrambi i casi.

A screenshot dell'IDE PyCharm con un comando Azure CLI che distribuisce un'app Web.

comandi Azure CLI

Quando si lavora in locale con le app Web usando i comandi Azure CLI, in genere si usano i comandi seguenti:

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

Ecco un esempio Azure CLI comando per creare un'app Web e le risorse associate e distribuirlo in Azure in un comando usando 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 Quickstart: Distribuire un'app Web Python (Django o Flask) in Azure App Service.

Tenere presente che per alcuni dei flussi di lavoro Azure è anche possibile usare il Azure CLI da un Azure Cloud Shell. Azure Cloud Shell è una shell interattiva, autenticata e accessibile dal browser per la gestione delle risorse Azure.

pacchetti chiave Azure SDK

Nelle app Web Python è possibile fare riferimento a livello di codice ai servizi di Azure usando il Azure SDK per Python. La sezione Usare le librerie di Azure (SDK) per Python illustra ampiamente questo SDK. In questa sezione vengono illustrati alcuni pacchetti chiave dell'SDK usati nello sviluppo Web. Viene anche visualizzato un esempio che segue le procedure consigliate per l'autenticazione del codice con le risorse Azure.

La tabella seguente elenca alcuni dei pacchetti comunemente usati nello sviluppo di app Web. È possibile installare i pacchetti nell'ambiente virtuale direttamente usando 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 Azure Storage 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

Il pacchetto azure-identity consente all'app Web di eseguire l'autenticazione con Microsoft Entra ID. Per l'autenticazione nel codice dell'app Web, usare DefaultAzureCredential nel azure-identity pacchetto. Nell'esempio seguente viene illustrato come accedere alle Azure Storage. Il modello è simile per altre risorse 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 cerca nelle posizioni predefinite le informazioni sull'account, ad esempio le variabili di ambiente o l'accesso Azure CLI. Per informazioni approfondite sulla logica DefaultAzureCredential, vedere Authenticate Python apps to Azure services by using the Azure SDK for Python.

Framework web basati su Python

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

Tre framework Web Python comuni sono Django, Flask e FastAPI. È possibile usare questi e altri framework Web con Azure.

L'esempio seguente illustra come iniziare rapidamente a usare questi framework in locale. Quando si eseguono questi comandi, si finisce con un'applicazione, sebbene sia semplice da distribuire in Azure. Eseguire questi comandi all'interno di un ambiente virtuale.

Passaggio 1: Scaricare i framework usando 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 funge da 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. Distribuire quindi l'app Web in Azure o in contenitori usando Docker e distribuirla.

Passaggi successivi