Specifica le dipendenze in Python
Esistono due modi per specificare le dipendenze per le funzioni Cloud Run scritte in
Python: utilizzo del gestore di pacchetti pip
requirements.txt
file o pacchetti di dipendenze locali insieme alla funzione.
La specifica delle dipendenze mediante lo standard Pipfile/Pipfile.lock è non supportati. 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
che contiene le tue
della funzione.
Quando esegui il deployment o il nuovo deployment della funzione, le funzioni Cloud Run
utilizzano 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 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 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 le funzioni Cloud Run lo installino 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 tuo registry privato. Includi lo stato
functions-framework
come dipendenza dalla tua funzione per evitare di installare il componente
dalla rete internet pubblica.
Pacchettizzazione 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 il tuo ambiente Cloud Run Functions l'accesso è limitato.
Ad esempio, potresti utilizzare una struttura di directory ad esempio:
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
Puoi quindi importare il codice come di consueto da localpackage
utilizzando quanto segue
Dichiarazione import
.
# Code in main.py from localpackage import script
Tieni presente che questo approccio non esegue alcun file setup.py
. Pacchetti con questi
i file possono ancora essere in bundle, ma potrebbero non essere eseguiti correttamente nelle funzioni di Cloud Run.
Dipendenze del fornitore
Le dipendenze del fornitore sono dipendenze il cui codice sorgente è incluso direttamente nel pacchetto di codice sorgente e viene ricostruito insieme al tuo codice. Utilizza la variabile di ambiente di compilazione GOOGLE_VENDOR_PIP_DEPENDENCIES per creare dipendenze pip del fornitore ed evitare di installarle durante il deployment.
Creare dipendenze del fornitore
Assicurati che python3 sia installato sul tuo sistema di sviluppo.
Dichiarare le dipendenze dell'applicazione in un file
requirements.txt
nella directory radice dell'albero di sviluppo.Dichiara il framework di funzioni come requisito includendo
functions-framework
in una riga separata nel filerequirements.txt
.Scarica le dipendenze della funzione nella tua directory locale. I passaggi per eseguire questa operazione dipendono dal fatto che la dipendenza sia un file wheel Python (*.whl) o un file tar (*.tar.gz).
Se la dipendenza è un pacchetto Python (*.whl), scaricala nella directory radice dell'albero di sviluppo con questo comando pip:
python3 -m pip download -r requirements.txt --only-binary=:all: \ -d DIRECTORY \ --python-version PYTHON_RUNTIME_VERSION \ --platform manylinux2014_x86_64 \ --implementation cp
Sostituisci:
- DIRECTORY: il nome della directory locale in cui eseguire il download
- PYTHON_RUNTIME_VERSION: la versione Python da utilizzare per
e controlli di compatibilità. Ad esempio
311
per Python 3.11.
Questa versione deve corrispondere a una delle piattaforme di runtime Python supportate
La struttura della directory risultante dovrebbe avere l'aspetto seguente:
myfunction/ ├── main.py └── requirements.txt └── DIRECTORY ├── dependency1.whl └── dependency2.whl
Se la dipendenza è un file tar (*.tar.gz):
Se la dipendenza è scritta in Python, utilizza pip per scaricarla:
python3 -m pip download -r requirements.txt \ -d DIRECTORY
Se una dipendenza è composta da codice scritto in C o C++, devi scaricare e compilarlo separatamente.
Esegui il deployment della funzione e delle sue dipendenze fornite dal fornitore:
gcloud functions deploy FUNCTION_NAME \ --runtime PYTHON_RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_PIP_DEPENDENCIES=DIRECTORY
Sostituisci:
- FUNCTION_NAME: il nome della funzione Cloud Run che stai eseguendo il deployment
- PYTHON_RUNTIME_NAME: il nome di uno dei runtime Python supportati in cui eseguire la funzione di cui è stato eseguito il deployment, ad esempio python311. Deve essere la stessa versione del runtime Python che hai utilizzato in dell'ambiente di sviluppo locale.
- DIRECTORY:il nome della directory contenente di dipendenze del fornitore
Per ulteriori dettagli sull'utilizzo dei buildpack, consulta Creare una funzione con i buildpack.
Utilizzo di dipendenze private
Dipendenze private da Artifact Registry
Un Python di Artifact Registry
repository privato può ospitare
per la funzione Python. Quando esegui il deployment nelle funzioni Cloud Run, il processo di compilazione genera automaticamente le credenziali di Artifact Registry per l'account di servizio Cloud Build. Devi eseguire
devi includere l'URL di Artifact Registry in requirements.txt
senza
generando credenziali aggiuntive. Ad esempio:
--index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Se la tua compilazione richiede più repository, utilizza un repository virtuale Artifact Registry per controllare in sicurezza l'ordine in cui pip esegue ricerche nei tuoi repository.
Dipendenze private da altri repository
Le dipendenze vengono installate in un ambiente Cloud Build che che forniscono l'accesso alle chiavi SSH. I pacchetti ospitati in repository che richiedono l'autenticazione basata su SSH devono essere forniti dal fornitore e caricati insieme al codice del progetto, come descritto nella sezione precedente.
Puoi utilizzare il comando pip install
con il
-t DIRECTORY
flag 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 nell'esecuzione completamente gestito di Google Cloud. Se la funzione utilizza una dipendenza che richiede un pacchetto di sistema non è presente nell'elenco, puoi richiedere pacchetto.