Gestione delle dipendenze


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

La specifica delle dipendenze utilizzando lo standard Pipfile/Pipfile.lock non è supportata. Il tuo progetto non dovrebbe includere questi file.

Specificare le 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 che contiene il codice della funzione.

Quando distribuisci o ridistribuisci la tua funzione, Cloud Functions utilizza pip per scaricare e installare la versione più recente delle tue 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 il riferimento requirements.txt .

Per evitare che la tua build venga influenzata dalle modifiche alla versione delle dipendenze, valuta la possibilità di aggiungere i pacchetti delle dipendenze a una versione specifica.

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

functions-framework
requests==2.20.0
numpy

Il framework delle funzioni è 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 chiarezza.

Se la tua funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring functions-framework nel tuo registro privato. Includi il functions-framework mirrorate come dipendenza della tua funzione per evitare di installare il pacchetto dall'Internet pubblica.

Packaging delle dipendenze locali

Puoi anche creare pacchetti e distribuire dipendenze insieme alla tua funzione. Questo approccio è utile se la tua dipendenza non è disponibile tramite il gestore 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

È quindi possibile importare il codice come al solito da localpackage utilizzando la seguente 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.