Specifica le dipendenze dell'applicazione per le versioni di Python supportate utilizzando uno dei seguenti approcci:
Utilizza un file
requirements.txtnella directory principale. Questo file deve trovarsi nella stessa directory del filemain.pyche contiene il codice sorgente. Il filerequirements.txtcontiene una riga per pacchetto. Ogni riga contiene il nome del pacchetto e, facoltativamente, la versione richiesta. Per evitare che la build sia interessata dalle modifiche alla versione delle dipendenze, ti consigliamo di bloccare i pacchetti di dipendenze su una versione specifica.Ecco un esempio di file
requirements.txt:functions-framework requests==2.20.0 numpyUtilizza un file
pyproject.tomlper specificare le dipendenze. Se gestisci le dipendenze dell'applicazione in un filepyproject.tomlanziché nel filerequirements.txt, il buildpack Python determina il gestore di pacchetti in base alla configurazione specificata nel filepyproject.toml. Per maggiori informazioni, vedi Eseguire il deployment di applicazioni Python con un filepyproject.toml.Se la tua applicazione utilizza sia il file
pyproject.tomlsia il filerequirements.txt, il filerequirements.txtha la precedenza.Ecco un esempio di file
pyproject.toml:[project] name = "demo-app" version = "0.1.0" description = "" requires-python = ">=3.10" dependencies = [ "flask>=3.1.1", "gunicorn>=23.0.0", ] [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
Crea un pacchetto di dipendenze locali insieme alla funzione.
La specifica delle dipendenze mediante lo standard
Pipfile/Pipfile.locknon è supportata. Il tuo progetto non deve includere questi file.Se utilizzi un file
requirements.txtper gestire le dipendenze, Cloud Run installa Functions Framework per tuo conto quando crei una funzione. Tuttavia, ti consigliamo di includere Functions Framework come dipendenza esplicita per evitare discrepanze.Quando utilizzi un file
pyproject.toml, devi includere Functions Framework come dipendenza perché Cloud Run non lo installa per tuo conto.
Gestore di pacchetti
Se gestisci le dipendenze utilizzando requirements.txt file, il gestore
di pacchetti predefinito varia in base alla versione di Python che configuri.
Se utilizzi un file pyproject.toml per gestire le dipendenze anziché un file requirements.txt, il buildpack Python determina il gestore di pacchetti in base alle impostazioni di configurazione nel file pyproject.toml. Il buildpack supporta i gestori di pacchetti pip, uv e Poetry. Per ulteriori informazioni, vedi Eseguire il deployment di applicazioni Python con un file
pyproject.toml.
Python 3.14 e versioni successive
A partire dalla versione 3.14 (anteprima) e successive di Python, il buildpack Python utilizza il gestore di pacchetti uv come programma di installazione predefinito per le dipendenze specificate nel file requirements.txt.
Per utilizzare pip come gestore dei pacchetti,
configura la variabile di ambiente GOOGLE_PYTHON_PACKAGE_MANAGER="pip".
Esegui il comando gcloud run deploy per impostare la variabile di ambiente del gestore di pacchetti su pip:
gcloud run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=pip
Sostituisci SERVICE con il nome del tuo servizio Cloud Run.
Python 3.13 e precedenti
Per Python versione 3.13 e precedenti, il buildpack Python utilizza il gestore dei pacchetti pip per installare le dipendenze definite nel file requirements.txt.
Per utilizzare uv (anteprima) come gestore dei pacchetti,
configura la variabile di ambiente GOOGLE_PYTHON_PACKAGE_MANAGER="uv".
Esegui il comando gcloud beta run deploy per impostare la variabile di ambiente del gestore di pacchetti su uv:
gcloud beta run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=uv
Sostituisci SERVICE con il nome del tuo servizio Cloud Run.
Crea un pacchetto di dipendenze locali
Crea pacchetti delle dipendenze ed esegui il deployment insieme alla funzione. Questo approccio è utile se la dipendenza non è disponibile quando utilizzi un gestore di pacchetti supportato o se l'accesso a internet dell'ambiente Cloud Run è limitato.
Puoi anche utilizzare un file requirements.txt per specificare dipendenze aggiuntive che non hai incluso nel pacchetto insieme alla funzione.
Ad esempio, potresti utilizzare la seguente struttura di directory:
myfunction/
├── main.py
└── localpackage/
├── __init__.py
└── script.py
Importa il codice da localpackage utilizzando la seguente istruzione import:
# code in main.py
from localpackage import script
Questo approccio non esegue alcun file setup.py. Puoi raggruppare i pacchetti con questi file, ma il pacchetto potrebbe non essere eseguito correttamente in Cloud Run Functions.
Dipendenze copiate
Le dipendenze copiate sono dipendenze la cui origine è inclusa direttamente nel pacchetto di codice sorgente e ricompilata insieme al tuo codice.
Utilizza la variabile di ambiente di build GOOGLE_VENDOR_PIP_DEPENDENCIES per creare dipendenze pip copiate ed evitare di installarle durante il deployment.
Crea dipendenze copiate
Assicurati che python3 sia installato nel tuo sistema di sviluppo.
Dichiara le dipendenze dell'applicazione in un file
requirements.txtnella directory root dell'albero di sviluppo.Dichiara il framework di Functions come requisito includendo
functions-frameworkin una riga separata nel filerequirements.txt.Scarica le dipendenze della funzione nella directory locale. La procedura da eseguire varia a seconda che la dipendenza sia un file wheel Python (*.whl) o un file tar (*.tar.gz).
Se la dipendenza è un file wheel Python (*.whl), scaricalo nella directory root 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 cpSostituisci quanto segue:
- DIRECTORY: il nome della directory locale in cui eseguire il download.
- PYTHON_RUNTIME_VERSION: la versione di Python da utilizzare per i controlli di compatibilità. Ad esempio,
314per Python 3.14.
Questa versione deve corrispondere a uno dei runtime Python supportati.
La struttura di directory risultante dovrebbe essere simile alla 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 DIRECTORYSe una dipendenza è costituita da codice scritto in C o C++, scarica e compila il codice separatamente.
Esegui il deployment della funzione e delle relative dipendenze copiate:
gcloud functions deploy FUNCTION_NAME \ --runtime PYTHON_RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_PIP_DEPENDENCIES=DIRECTORYSostituisci quanto segue:
- FUNCTION_NAME: il nome della funzione di cui 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 nel tuo ambiente di sviluppo locale.
- DIRECTORY: il nome della directory contenente le dipendenze copiate.
Per saperne di più sull'utilizzo dei buildpack, consulta Crea una funzione con i buildpack.
Utilizza dipendenze private
Puoi utilizzare dipendenze private di Artifact Registry o di altri repository.
Dipendenze private di Artifact Registry
Un repository Python di Artifact Registry ospita le dipendenze private della tua funzione Python. Quando esegui il deployment in Cloud Run, il processo di compilazione genera automaticamente le credenziali di Artifact Registry per il service account Cloud Build.
Includi l'URL di Artifact Registry nel tuo file requirements.txt senza generare credenziali aggiuntive. Ad esempio:
--index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Se la tua build richiede più repository, utilizza un repository virtuale Artifact Registry per controllare in modo sicuro l'ordine in cui pip esegue la ricerca nei repository.
Dipendenze private di altri repository
Buildpack installa le dipendenze in un ambiente Cloud Build che non fornisce l'accesso alle chiavi SSH. Copia i pacchetti ospitati in repository che richiedono l'autenticazione basata su SSH e caricali insieme al codice del progetto.
Utilizza 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__.pyvuoto nella directoryDIRECTORYper trasformarlo in un modulo. - Esegui l'importazione da questo modulo per utilizzare la dipendenza:
import DIRECTORY.DEPENDENCY
Pacchetti preinstallati
Il buildpack Python installa i seguenti pacchetti Python
quando esegui il deployment della funzione. Se utilizzi uno di questi pacchetti nel codice della funzione, includi le seguenti versioni nel file requirements.txt:
Per evitare problemi con gli aggiornamenti della versione delle dipendenze, blocca il pacchetto su una versione specifica.
Il buildpack Python installa i seguenti pacchetti bloccati su una versione specifica:
pip(ultima versione)setuptools(ultima versione)wheel(determinato dai requisiti del prodotto)
Il runtime Python include anche una serie di pacchetti di sistema nell'ambiente di esecuzione.