Specifica le dipendenze in Python
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 utilizzando 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 denominato requirements.txt
.
Questo file deve trovarsi nella stessa directory del file main.py
che contiene il codice della funzione.
Quando esegui il deployment della funzione, Cloud Functions scarica e installa le dipendenze dichiarate nel file requirements.txt
utilizzando pip.
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 riferimento requirements.txt
.
Di seguito è riportato un esempio di file requirements.txt
:
requests==2.20.0 numpy
Pacchettizzazione delle dipendenze locali
Puoi anche pacchettizzare 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, 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 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 in bundle, ma potrebbero non essere eseguiti correttamente su Cloud Functions.
Utilizzo delle dipendenze private
Dipendenze private da Artifact Registry
Un repository Python di Artifact Registry può ospitare dipendenze private per la tua funzione Python. Durante il deployment in Cloud Functions, il processo di compilazione genererà automaticamente le credenziali di Artifact Registry per l'account di servizio Cloud Build. Devi solo includere l'URL di Artifact Registry in requirements.txt
senza generare ulteriori credenziali. Ecco alcuni esempi:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Dipendenze private da altri repository
Le dipendenze vengono installate in un ambiente Cloud Build che non fornisce l'accesso alle chiavi SSH. I pacchetti ospitati in repository che richiedono l'autenticazione basata su SSH devono essere fornitori e caricati insieme al codice del progetto, come descritto nella sezione precedente.
Puoi utilizzare il comando pip install
con il flag -t DIRECTORY
per copiare le dipendenze private in una directory locale prima di eseguire il deployment dell'app, come segue:
Copia la dipendenza in una directory locale:
pip install -t DIRECTORY DEPENDENCY
Aggiungi un file
__init__.py
vuoto alla directoryDIRECTORY
per trasformarlo in un modulo.Importa da questo modulo per utilizzare la dipendenza:
import DIRECTORY.DEPENDENCY
Pacchetti preinstallati
I seguenti pacchetti Python vengono installati automaticamente insieme alla funzione durante il deployment. Se utilizzi uno di questi pacchetti nel codice della funzione, ti consigliamo di includere le seguenti versioni nel file requirements.txt
:
Python 3.7
Python 3.8 e versioni successive
* `pip` (latest version)
* `setuptools` (latest version)
* `wheel` (determined by product requirements)
Inoltre, il runtime Python include una serie di pacchetti di sistema nell'ambiente di esecuzione. Se la funzione utilizza una dipendenza che richiede un pacchetto di sistema non elencato, puoi richiedere un pacchetto.