Esistono due modi per specificare le dipendenze per Cloud Functions scritte in Python: utilizzando il file requirements.txt
del gestore di pacchetti pip o pacchettizzando le 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 riesegui il deployment della funzione, Cloud Functions
utilizza pip per scaricare e installare l'ultima versione 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 ulteriori 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 registro 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 con questo approccio non verranno eseguiti file setup.py
. I pacchetti con questi
file possono comunque essere raggruppati, ma potrebbero non essere eseguiti correttamente su Cloud Functions.