Condividi tramite


Creare app Python per Funzioni di Azure

Funzioni di Azure supporta tre opzioni di compilazione per la pubblicazione delle app Python in Azure. Scegliere il metodo di compilazione in base all'ambiente locale, alle dipendenze delle app e ai requisiti di runtime.

Confronto rapido per le azioni di compilazione

Tipo di distribuzione Posizione in cui sono installate le dipendenze Caso d'uso tipico
Compilazione remota (scelta consigliata) Azure (Servizio app) Impostazione predefinita, consigliata per la maggior parte degli utenti
Compilazione locale La tua macchina Sviluppatori Linux/macOS, scenari Windows limitati
Dipendenze personalizzate Gestito tramite URL di indice aggiuntivo o installazione locale Dipendenze non-PyPI

Considerazioni sul pacchetto di distribuzione

Quando si distribuisce l'app per le funzioni Python in Azure, tenere presenti questi requisiti per il confezionamento:

  • Contenuto del pacchetto, non la cartella: distribuire il contenuto della cartella del progetto, non la cartella stessa.
  • host.jsonLivello radice: assicurarsi che un singolo host.json file si trova nella radice del pacchetto di distribuzione, non annidato in una sottocartella.
  • Escludere i file di sviluppo: è possibile escludere cartelle come tests/, .github/e .venv*/ dal pacchetto distribuito includendole in .funcignore.
  • L'ambiente di compilazione deve corrispondere all'ambiente di produzione: le dipendenze devono essere compilate in un computer Ubuntu usando la stessa versione python dell'app di produzione. La compilazione remota gestisce automaticamente questo scenario.
  • Le dipendenze devono essere installate in ./.python_packages/lib/site-packages: la compilazione remota installa tutte le dipendenze elencate nella requirements.txt directory corretta.
  • Tenere presente le dimensioni dei pacchetti di distribuzione: i set di dipendenze di grandi dimensioni aumentano il tempo di compilazione, la latenza di avvio a freddo e il tempo di importazione e inizializzazione del modulo. Le applicazioni con librerie scientifiche o ML di grandi dimensioni (incluso pytorch) sono particolarmente interessate.
  • La compilazione remota ha un timeout di 60 secondi: se l'installazione delle dipendenze supera il limite, la compilazione non riesce. In tal caso, prendere in considerazione l'uso di una compilazione locale e la distribuzione con dipendenze predefinite.
  • L'importazione del modulo prevede un limite di tempo di 2 minuti: il caricamento del modulo Python e l'indicizzazione delle funzioni durante l'avvio prevede un limite di 2 minuti per Python 3.13 e versioni successive o per le versioni precedenti di Python con PYTHON_ENABLE_INIT_INDEXING abilitato. Se l'app supera questo valore, ridurre le importazioni a livello globale o usare le importazioni ritardate (importare i moduli all'interno del corpo della funzione invece che nell'ambito globale).

Compilazione remota

La compilazione remota è l'approccio consigliato per una distribuzione di sola codice dell'app Python in Funzioni.

Con la compilazione remota, la piattaforma funzioni gestisce l'installazione dei pacchetti e garantisce la compatibilità con l'ambiente di runtime remoto. L'uso della compilazione remota comporta anche un pacchetto di distribuzione più piccolo.

È possibile usare la compilazione remota quando si pubblica l'app Python usando questi strumenti:

Per abilitare la compilazione remota per altri scenari, ad esempio Recapito continuo con Azure Pipelines, vedere Abilitazione della compilazione remota.

La compilazione remota supporta anche indici di pacchetti personalizzati quando si usa l'impostazione dell'app PIP_EXTRA_INDEX_URL . Per ulteriori informazioni, vedere Compilazione remota.

Importante

La compilazione remota installa tutte le dipendenze elencate in requirements.txt. Per assicurarsi che tutti i pacchetti necessari siano installati, assicurarsi di includere tali dipendenze nel requirements.txt file.

Compilazione locale

Se non si richiede una compilazione remota, le dipendenze vengono invece installate nel computer. L'intero progetto locale e le dipendenze vengono quindi impacchettati localmente e distribuiti nella tua app per le funzioni. L'uso della compilazione locale comporta un caricamento di pacchetti più grande.

È anche necessario installare le dipendenze nella directory corretta. Usare pip install --target="./.python_packages/lib/site-packages" per installare le dipendenze necessarie nella cartella locale .python_packages/lib/site-packages . Ad esempio, se le dipendenze sono elencate in un requirements.txt file, è possibile eseguire questo comando:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

Usare la compilazione locale quando:

  • Stai sviluppando localmente su Linux o macOS.
  • La compilazione remota non è disponibile o è limitata.
  • Si desidera definire le dipendenze in un file diverso da requirements.txt, ad esempio pyproject.toml.

È possibile configurare gli strumenti seguenti per l'uso della compilazione locale:

Importante

Quando si sviluppano app Python in un computer Windows, non usare la compilazione locale. I pacchetti basati su un computer Windows spesso presentano problemi di distribuzione e esecuzione in Linux in Funzioni di Azure. Usare la build locale solo se si è certi che il pacchetto venga eseguito in sistemi basati su Linux.

Dipendenze personalizzate

Azure Functions supporta dipendenze personalizzate e non-PyPI, usando l'impostazione dell'app PIP_EXTRA_INDEX_URL o creando una build locale in un computer Linux o macOS.

Compilazione remota con un URL di indice aggiuntivo

Quando i pacchetti privati sono disponibili online, è possibile richiedere una compilazione remota dopo aver impostato il percorso del pacchetto privato usando l'impostazione dell'app PIP_EXTRA_INDEX_URL . Quando si imposta PIP_EXTRA_INDEX_URL, le compilazioni remote usano questo feed di pacchetti durante la distribuzione. PIP_INDEX_URL sostituisce l'indice del pacchetto, pertanto è consigliabile usare PIP_EXTRA_INDEX_URL invece per evitare comportamenti imprevisti.

Pacchetti locali o ruote

I pacchetti locali e i wheel sono supportati durante la compilazione delle applicazioni Python Function di Azure.

Per installare questi pacchetti o ruote usando la compilazione remota, è possibile includere le dipendenze nel requirements.txt file e distribuirlo con la compilazione remota abilitata.

Ad esempio, il requirements.txt file potrebbe essere simile al frammento di codice seguente:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

Per installare queste dipendenze usando la compilazione locale, installare le dipendenze nella cartella locale .python_packages/lib/site-packages e distribuirla con compilazione remota disabilitata. Ad esempio, se hai definito i pacchetti nel file requirements.txt, puoi installare e pubblicare usando i seguenti comandi e gli strumenti Core.

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build