Tentukan dependensi aplikasi Anda untuk versi Python yang didukung menggunakan salah satu pendekatan berikut:
Gunakan file
requirements.txtdi direktori root. File ini harus berada di direktori yang sama dengan filemain.pyyang berisi kode sumber Anda. Filerequirements.txtberisi satu baris per paket. Setiap baris berisi nama paket, dan secara opsional, versi yang diminta. Agar build Anda tidak terpengaruh oleh perubahan versi dependensi, pertimbangkan untuk menyematkan paket dependensi ke versi tertentu.Berikut adalah contoh file
requirements.txt:functions-framework requests==2.20.0 numpyGunakan file
pyproject.tomluntuk menentukan dependensi. Jika Anda mengelola dependensi aplikasi dalam filepyproject.toml, bukan filerequirements.txt, buildpack Python akan menentukan pengelola paket berdasarkan konfigurasi yang Anda tentukan dalam filepyproject.toml. Untuk mengetahui informasi selengkapnya, lihat Men-deploy aplikasi Python dengan filepyproject.toml.Jika aplikasi Anda menggunakan file
pyproject.tomldan filerequirements.txt, filerequirements.txtakan diprioritaskan.Berikut adalah contoh 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"
Paketkan dependensi lokal bersama fungsi Anda.
Spesifikasi dependensi yang menggunakan standar
Pipfile/Pipfile.locktidak didukung. Project Anda tidak boleh menyertakan file ini.Jika Anda menggunakan file
requirements.txtuntuk mengelola dependensi, Cloud Run akan menginstal Functions Framework atas nama Anda saat Anda membuat fungsi. Namun, sebaiknya Anda menyertakan Functions Framework sebagai dependensi eksplisit untuk menghindari perbedaan.Saat menggunakan file
pyproject.toml, Anda harus menyertakan Functions Framework sebagai dependensi karena Cloud Run tidak menginstalnya untuk Anda.
Pengelola paket
Jika Anda mengelola dependensi menggunakan requirements.txt file, pengelola paket
default akan bervariasi berdasarkan versi Python yang Anda konfigurasi.
Jika Anda menggunakan file pyproject.toml untuk mengelola dependensi, bukan file
requirements.txt, buildpack Python akan menentukan
pengelola paket berdasarkan setelan konfigurasi Anda dalam file pyproject.toml. Buildpack mendukung pengelola paket pip, uv, dan Poetry. Untuk mengetahui informasi selengkapnya, lihat Men-deploy aplikasi Python dengan file
pyproject.toml.
Python 3.14 dan yang lebih baru
Mulai dari Python versi 3.14 (pratinjau) dan yang lebih baru, buildpack Python menggunakan pengelola paket uv sebagai penginstal default untuk dependensi yang Anda tentukan dalam file requirements.txt.
Untuk menggunakan pip sebagai pengelola paket,
konfigurasi variabel lingkungan GOOGLE_PYTHON_PACKAGE_MANAGER="pip".
Jalankan perintah gcloud run deploy untuk menetapkan variabel lingkungan pengelola paket ke pip:
gcloud run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=pip
Ganti SERVICE dengan nama layanan Cloud Run Anda.
Python 3.13 dan yang lebih lama
Untuk Python versi 3.13 dan yang lebih lama, buildpack Python menggunakan pengelola paket pip untuk menginstal dependensi yang Anda tentukan dalam file requirements.txt.
Untuk menggunakan uv (pratinjau) sebagai pengelola paket,
konfigurasi variabel lingkungan GOOGLE_PYTHON_PACKAGE_MANAGER="uv".
Jalankan perintah gcloud beta run deploy untuk menetapkan variabel lingkungan pengelola paket ke uv:
gcloud beta run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=uv
Ganti SERVICE dengan nama layanan Cloud Run Anda.
Mengemas dependensi lokal
Kemas dan deploy dependensi bersama fungsi Anda. Pendekatan ini berguna jika dependensi Anda tidak tersedia saat Anda menggunakan pengelola paket yang didukung atau jika akses internet lingkungan Cloud Run Anda dibatasi.
Anda juga dapat menggunakan file requirements.txt untuk menentukan dependensi tambahan yang belum dikemas bersama fungsi Anda.
Misalnya, Anda dapat menggunakan struktur direktori berikut:
myfunction/
├── main.py
└── localpackage/
├── __init__.py
└── script.py
Impor kode dari localpackage menggunakan pernyataan import berikut:
# code in main.py
from localpackage import script
Pendekatan ini tidak akan menjalankan file setup.py apa pun. Anda dapat memaketkan paket dengan file tersebut, tetapi paket mungkin tidak berjalan dengan benar di Cloud Run functions.
Dependensi yang disalin
Dependensi yang disalin adalah dependensi yang sumbernya disertakan langsung
dalam paket kode sumber Anda dan di-build ulang bersama kode Anda sendiri.
Gunakan variabel lingkungan build GOOGLE_VENDOR_PIP_DEPENDENCIES
untuk membuat dependensi pip yang disalin dan menghindari penginstalannya
selama deployment.
Membuat dependensi yang disalin
Pastikan python3 diinstal di sistem pengembangan Anda.
Deklarasikan dependensi aplikasi Anda dalam file
requirements.txtdi direktori root hierarki pengembangan Anda.Nyatakan Functions Framework sebagai persyaratan dengan menyertakan
functions-frameworkpada baris terpisah dalam filerequirements.txtAnda.Download dependensi fungsi Anda ke direktori lokal Anda. Langkah-langkah untuk melakukannya bergantung pada apakah dependensi adalah file wheel Python (*.whl) atau file tar (*.tar.gz).
Jika dependensinya adalah wheel Python (*.whl), download ke direktori root hierarki pengembangan Anda dengan perintah pip ini:
python3 -m pip download -r requirements.txt --only-binary=:all: \ -d DIRECTORY \ --python-version PYTHON_RUNTIME_VERSION \ --platform manylinux2014_x86_64 \ --implementation cpGanti kode berikut:
- DIRECTORY: nama direktori lokal yang akan digunakan untuk mendownload.
- PYTHON_RUNTIME_VERSION: versi Python yang akan digunakan untuk
pemeriksaan kompatibilitas. Misalnya,
314untuk Python 3.14.
Versi ini harus cocok dengan salah satu runtime Python yang didukung.
Struktur direktori yang dihasilkan akan terlihat seperti ini:
myfunction/ ├── main.py └── requirements.txt └── DIRECTORY ├── dependency1.whl └── dependency2.whl
Jika dependensi adalah file tar (*.tar.gz):
Jika dependensi ditulis dalam Python, gunakan pip untuk mendownloadnya:
python3 -m pip download -r requirements.txt \ -d DIRECTORYJika dependensi terdiri dari kode yang ditulis dalam C atau C++, download dan kompilasi kode secara terpisah.
Deploy fungsi dan dependensi yang disalin:
gcloud functions deploy FUNCTION_NAME \ --runtime PYTHON_RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_PIP_DEPENDENCIES=DIRECTORYGanti kode berikut:
- FUNCTION_NAME: nama fungsi yang Anda deploy.
- PYTHON_RUNTIME_NAME: nama salah satu runtime Python yang didukung untuk menjalankan fungsi yang di-deploy - misalnya python311. Versi ini harus sama dengan versi runtime Python yang Anda gunakan di lingkungan pengembangan lokal.
- DIRECTORY: nama direktori yang berisi dependensi yang disalin.
Untuk mengetahui detail selengkapnya tentang penggunaan buildpack, lihat Membangun fungsi dengan buildpack.
Menggunakan dependensi pribadi
Anda dapat menggunakan dependensi pribadi dari Artifact Registry atau dari repositori lain.
Dependensi pribadi dari Artifact Registry
Repositori Python Artifact Registry menghosting dependensi pribadi untuk fungsi Python Anda. Saat melakukan deployment ke Cloud Run, proses build akan otomatis menghasilkan kredensial Artifact Registry untuk akun layanan Cloud Build.
Sertakan URL Artifact Registry di requirements.txt tanpa membuat kredensial tambahan. Contoh:
--index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Jika build Anda memerlukan beberapa repositori, gunakan repositori virtual Artifact Registry untuk mengontrol dengan aman urutan penelusuran repositori oleh pip.
Dependensi pribadi dari repositori lain
Buildpack menginstal dependensi di lingkungan Cloud Build yang tidak memberikan akses ke kunci SSH. Salin paket yang Anda hosting di repositori yang memerlukan autentikasi berbasis SSH dan upload paket dengan kode project Anda.
Gunakan perintah pip install dengan flag -t DIRECTORY untuk menyalin dependensi pribadi ke direktori lokal sebelum men-deploy aplikasi, seperti berikut:
- Salin dependensi Anda ke direktori lokal:
pip install -t DIRECTORY DEPENDENCY
- Tambahkan file
__init__.pykosong ke direktoriDIRECTORYuntuk mengubahnya menjadi modul. - Impor dari modul ini untuk menggunakan dependensi Anda:
import DIRECTORY.DEPENDENCY
Paket yang telah terpasang sebelumnya
Buildpack Python menginstal paket Python berikut saat Anda men-deploy fungsi. Jika Anda menggunakan salah satu paket ini dalam kode fungsi, sertakan versi berikut dalam file requirements.txt:
Untuk menghindari masalah pada update versi dependensi, sematkan paket ke versi tertentu.
Buildpack Python menginstal paket berikut yang disematkan ke versi tertentu:
pip(versi terbaru)setuptools(versi terbaru)wheel(ditentukan oleh persyaratan produk)
Runtime Python juga menyertakan sejumlah paket sistem di lingkungan eksekusi.