Gestione delle dipendenze


Esistono due modi per specificare le dipendenze per Cloud Functions scritto in Python: utilizzando il file requirements.txt del gestore dei pacchetti pip o creando il pacchetto delle dipendenze locali insieme alla funzione.

La specifica delle dipendenze che utilizza lo standard Pipfile/Pipfile.lock non è supportata. Il progetto non deve includere questi file.

Specifica delle dipendenze con pip

Le dipendenze in Python sono gestite con pip ed espresse in un file di metadati chiamato requirements.txt. Questo file deve trovarsi nella stessa directory del file main.py contenente il codice della funzione.

Quando esegui il deployment o il ricoinvolgimento della funzione, Cloud Functions utilizza pip per scaricare e installare la versione più recente delle dipendenze come dichiarato nel file requirements.txt. Il file requirements.txt contiene una riga per pacchetto. Ogni riga contiene il nome del pacchetto e, facoltativamente, la versione richiesta. Per maggiori dettagli, consulta la documentazione di riferimento requirements.txt.

Per evitare che la compilazione venga interessata dalle modifiche alle versioni delle dipendenze, prendi in considerazione la possibilità di bloccare i pacchetti delle dipendenze su una versione specifica.

Di seguito è riportato un esempio di file requirements.txt:

functions-framework
requests==2.20.0
numpy

Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Anche se Cloud Functions lo installa per tuo conto al momento della creazione della funzione, ti consigliamo di includerlo come dipendenza esplicita per maggiore chiarezza.

Se la funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework nel tuo registry privato. Includi functions-framework sottoposto a mirroring come dipendenza della funzione per evitare di installare il pacchetto dalla rete internet pubblica.

Imballaggio delle dipendenze locali

Puoi anche creare pacchetti e implementare le dipendenze insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile tramite il gestore dei pacchetti pip o se l'accesso a internet dell'ambiente Cloud Functions è limitato.

Ad esempio, puoi utilizzare una struttura di directory come la seguente:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Puoi quindi importare il codice come di consueto da localpackage utilizzando il seguente statement import.

# Code in main.py
from localpackage import script

Tieni presente che questo approccio non eseguirà file setup.py. I pacchetti con questi file possono comunque essere raggruppati, ma potrebbero non funzionare correttamente su Cloud Functions.