Esistono due modi per specificare le dipendenze per Cloud Functions scritte in
Python: utilizzando il file requirements.txt
del gestore di pacchetti pip o creando un pacchetto delle dipendenze locali insieme alla funzione.
La specifica delle dipendenze utilizzando lo standard Pipfile/Pipfile.lock non è supportata. Il progetto non deve includere questi file.
Specifica delle dipendenze con pip
Le dipendenze in Python vengono gestite con pip ed espresse in un file di metadati
chiamato
requirements.txt
.
Questo file deve trovarsi nella stessa directory del file main.py
che contiene il codice della funzione.
Quando esegui il deployment o il redeployment della funzione, Cloud Functions
utilizza pip per scaricare e installare l'ultima versione delle
dipendenze dichiarate 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
il requirements.txt
riferimento.
Per evitare che la build sia interessata dalle modifiche alla versione delle dipendenze, valuta la possibilità di bloccare i pacchetti di 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. Sebbene Cloud Functions lo installi per tuo conto al momento della creazione della funzione, ti consigliamo di includerlo come dipendenza esplicita per maggiore chiarezza.
Se la tua
funzione si basa su dipendenze private, ti consigliamo di
eseguire il mirroring di functions-framework
nel tuo registro privato. Includi functions-framework
sottoposto a mirroring come dipendenza della tua funzione per evitare di installare il pacchetto dalla rete internet pubblica.
Pacchettizzazione delle dipendenze locali
Puoi anche creare pacchetti ed eseguire il deployment delle dipendenze insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile tramite il gestore di pacchetti pip o se l'accesso a internet dell'ambiente Cloud Functions è limitato.
Ad esempio, potresti 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 l'istruzione
import
.
# Code in main.py from localpackage import script
Tieni presente che questo approccio non eseguirà alcun file setup.py
. I pacchetti con questi
file possono comunque essere raggruppati, ma potrebbero non essere eseguiti correttamente su Cloud Functions.