Gestione delle dipendenze


Esistono due modi per specificare le dipendenze per Cloud Functions scritte in Python: utilizzo del gestore di pacchetti pip requirements.txt o pacchettizza 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 le dipendenze con pip

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

Quando esegui o riesegui il deployment della funzione, Cloud Functions usa pip per scaricare e installare l'ultima versione del tuo 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, vedi il requirements.txt riferimento.

Per evitare che la build venga influenzata da modifiche alla versione delle dipendenze, valuta la possibilità di bloccare i pacchetti di dipendenze su una versione specifica.

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

functions-framework
requests==2.20.0
numpy

Il framework delle funzioni è un la dipendenza richiesta per tutte le funzioni. Sebbene Cloud Functions lo installi per tuo conto quando viene creata la funzione, ti consigliamo includerla come dipendenza esplicita per maggiore chiarezza.

Se le tue si basa su dipendenze private, ti consigliamo di esegui il mirroring di functions-framework nel tuo registro privato. Includi lo stato functions-framework come dipendenza dalla tua funzione per evitare di installare il componente dalla rete internet pubblica.

Imballaggio delle dipendenze locali

Puoi anche pacchettizzare ed eseguire il deployment delle dipendenze insieme alla funzione. Questo è utile se la dipendenza non è disponibile tramite il pip gestore di pacchetti o se la connessione Internet del tuo ambiente Cloud Functions l'accesso è 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 quanto segue Informativa import.

# Code in main.py
from localpackage import script

Tieni presente che questo approccio non esegue alcun file setup.py. Pacchetti con questi file possono ancora essere raggruppati, ma potrebbero non essere eseguiti correttamente su Cloud Functions.