Buildpack mendukung konfigurasi bahasa idiomatis melalui variabel lingkungan.
Menentukan versi Python
Secara default, buildpack Python Runtime menggunakan penafsir Python versi stabil terbaru. Jika aplikasi memerlukan versi tertentu, Anda dapat menentukannya dengan menyertakan file .python-version dalam direktori root aplikasi.
3.14
Gunakan GOOGLE_PYTHON_VERSION
Anda juga dapat menentukan versi Python menggunakan
variabel lingkungan GOOGLE_PYTHON_VERSION.
Jika kedua konfigurasi ditetapkan, nilai GOOGLE_PYTHON_VERSION akan lebih
diprioritaskan daripada file .python-version. Secara default, jika file
.python-version dan variabel lingkungan GOOGLE_PYTHON_VERSION tidak
ditentukan, versi LTS terbaru Python akan digunakan.
Untuk mengonfigurasi buildpack agar menggunakan Python 3.13 saat men-deploy aplikasi Anda:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.14.x"
Anda juga dapat menggunakan deskriptor project project.toml untuk mengenkode
variabel lingkungan bersama file project Anda. Lihat petunjuk cara
membangun aplikasi dengan variabel lingkungan.
Menentukan dependensi
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"
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".
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".
Mengonfigurasi pip
Perilaku pip dapat dikonfigurasi menggunakan variabel lingkungan:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Dependensi pribadi dari Artifact Registry
Repositori Python Artifact Registry
dapat menghosting dependensi pribadi untuk fungsi Python Anda. Saat membangun aplikasi di
Cloud Build, buildpack Python akan otomatis membuat kredensial Artifact Registry
untuk akun layanan Cloud Build.
Anda hanya perlu menyertakan URL Artifact Registry di requirements.txt
tanpa membuat kredensial tambahan. Contoh:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Titik entri aplikasi
Bagian berikut menjelaskan titik entri default untuk buildpack Python.
Titik entri untuk deployment sumber Cloud Run
Fitur ini hanya tersedia jika Anda men-deploy kode sumber ke Cloud Run dengan runtime Python. Fitur ini tidak berlaku jika Anda membangun image container secara langsung menggunakan pack build di luar proses deployment sumber Cloud Run.
Buildpack Python mendukung framework web modern seperti FastAPI, Gradio, dan Streamlit.
Python versi 3.12 dan yang lebih lama
Jika Anda menggunakan Python versi 3.12 dan yang lebih lama, buildpack Python secara default menggunakan Gunicorn sebagai server HTTP WSGI untuk workload Anda. Buildpack Python menetapkan titik entri default ke gunicorn -b :8080 main:app.
Python versi 3.13 dan yang lebih baru
Untuk Python versi 3.13 dan yang lebih baru, buildpack Python menetapkan titik entri default untuk deployment sumber Cloud Run berdasarkan konfigurasi framework atau server web di file requirements.txt Anda. Setelan default ini hanya berlaku untuk deployment sumber layanan Cloud Run, bukan untuk Cloud Run functions.
Saat Anda men-deploy layanan Cloud Run dari sumber menggunakan runtime Python, buildpack menentukan versi Python dan titik entri default dengan cara berikut:
Jika Anda tidak menentukan versi Python dalam file sumber, buildpack Python akan menyetel default ke versi Python terbaru yang didukung. Buildpack menentukan titik entri default berdasarkan server web atau framework yang telah Anda konfigurasi dalam file
requirements.txt.Jika Anda tidak menentukan server web atau framework dalam file
requirements.txt, buildpack Python akan menggunakan Gunicorn secara default sebagai server HTTP WSGI untuk workload Anda. Buildpack Python menetapkan titik entri default kegunicorn -b :8080 main:app.Buildpack Python menetapkan titik entri default berdasarkan urutan prioritas berikut, seperti yang ditentukan dalam file
requirements.txt:gunicornuvicornfastapi[standard]gradiostreamlit
Mengonfigurasi server web atau framework
Untuk setiap konfigurasi Python umum dalam file requirements.txt, tabel berikut menunjukkan titik entri default saat men-deploy ke Cloud Run dari sumber:
| Konfigurasi utama | Titik entri default | Variabel lingkungan |
|---|---|---|
gunicorn |
gunicorn -b :8080 main:app |
|
numpy |
gunicorn -b :8080 main:app |
|
fastapi uvicorn |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
fastapi[standard] |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
uvicorn gunicorn |
gunicorn -b :8080 main:app |
|
gradio |
python main.py |
GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=8080 |
streamlit |
streamlit run main.py --server.address 0.0.0.0 --server.port 8080 |
Untuk menghindari kegagalan deployment, gunakan versi Python yang didukung di file sumber Anda, dan tentukan server web di file requirements.txt Anda.
Atau, Anda juga dapat menentukan titik entri dengan menjalankan perintah deployment sumber berikut:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Ganti kode berikut:
- SERVICE: nama layanan yang ingin Anda deploy.
- ENTRYPOINT: titik entri default yang ingin Anda gunakan untuk kode sumber.
Jika Anda tidak dapat men-deploy kode sumber ke Cloud Run atau menemukan error dalam log, lihat panduan pemecahan masalah Cloud Run.
Titik entri untuk semua deployment lainnya
Buildpack Python menggunakan Gunicorn
sebagai server HTTP WSGI default untuk workload Anda. Aplikasi yang dibangun dengan buildpack Python
memulai proses gunicorn dengan setelan default,
mirip dengan menjalankan:
gunicorn --bind :8080 main:app
Menyesuaikan titik entri aplikasi
Anda dapat menyesuaikan perintah memulai aplikasi menggunakan Procfile atau variabel lingkungan. Anda mungkin perlu melakukannya untuk menyesuaikan konfigurasi titik entri default.
Anda dapat membuat Procfile dengan setelan kustom di direktori root.
Contoh:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Atau, Anda dapat menggunakan variabel lingkungan GOOGLE_ENTRYPOINT dengan
perintah pack. Contoh:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
Variabel Lingkungan
Buildpack Python mendukung variabel lingkungan berikut untuk menyesuaikan container Anda
PIP_<key>
Lihat dokumentasi pip.
Contoh: PIP_DEFAULT_TIMEOUT=60 menetapkan --default-timeout=60 untuk perintah pip.
Men-deploy aplikasi Python dengan file pyproject.toml
Buildpack Python mendukung project yang Anda konfigurasi
dengan file pyproject.toml. Dengan fitur ini, Anda dapat men-deploy
aplikasi yang dikelola dengan Poetry, uv, atau pip, langsung ke Cloud Run
dan Cloud Run Functions. Fitur ini tidak tersedia di App Engine.
Buildpack Python hanya menggunakan file pyproject.toml
jika tidak ada file requirements.txt di direktori root Anda. Jika aplikasi Anda menggunakan
file pyproject.toml dan file requirements.txt, maka file requirements.txt
akan lebih diutamakan.
Konfigurasi buildpack yang didukung
Buildpack Python mendukung konfigurasi berikut:
pip buildpack: Menginstal dependensi langsung dari
pyproject.tomljika mendeteksi semua kondisi berikut:File
pyproject.tomlada di direktori root dan Anda tidak mengonfigurasi alat dengan prioritas tinggi seperti filepoetry.lock, bagian[tool.poetry], atau fileuv.lock.Anda menetapkan variabel lingkungan
GOOGLE_PYTHON_PACKAGE_MANAGERkepip.
uv buildpack: Mendukung project Python yang Anda kelola dengan uv. Buildpack ini diaktifkan jika mendeteksi salah satu kondisi berikut:
- File
uv.lockdan filepyproject.tomlada di root project. - File
pyproject.tomlada di root project, dan Anda menetapkan variabel lingkunganGOOGLE_PYTHON_PACKAGE_MANAGERkeuv. - File
pyproject.tomlada dan Anda tidak menyertakan file kunci lain dengan prioritas tinggi sepertipoetry.lock,uv.lock, atau konfigurasi seperti[tool.poetry], dan Anda tidak menetapkan variabel lingkunganGOOGLE_PYTHON_PACKAGE_MANAGER.
- File
Buildpack Poetry: Mendukung project Python yang Anda kelola dengan Poetry. Buildpack ini akan aktif jika mendeteksi salah satu kondisi berikut:
- File
poetry.lockdan filepyproject.tomlada di root project. - File
pyproject.tomlada di root project dan bagian[tool.poetry]ada di filepyproject.toml.
- File
Prioritas pengelola paket
Buildpack Python menentukan pengelola paket default berdasarkan konfigurasi dalam urutan prioritas berikut:
File
requirements.txtakan diberi prioritas tertinggi. Hanya jika file ini ada, buildpack Python akan menggunakan pengelola paket default untuk menginstal dependensi pada langkah build. Jika filerequirements.txttidak ada, proses deteksi akan melanjutkan ke langkah berikutnya.Kemudian, buildpack memeriksa file
pyproject.tomluntuk menemukan filepoetry.lockatau bagian[tool.poetry]. Jika ditemukan, proses build akan dilanjutkan menggunakan Poetry untuk menginstal dependensi.Jika konfigurasi Poetry tidak terdeteksi, buildpack akan memeriksa file
uv.lock. Jika ditemukan, proses build akan menggunakan uv untuk menginstal dependensi.Jika file kunci tidak ada, buildpack akan memeriksa variabel lingkungan
GOOGLE_PYTHON_PACKAGE_MANAGERuntuk konfigurasipipatauuv.Default. Jika Anda tidak menetapkan variabel lingkungan, dan hanya menggunakan file
pyproject.tomltanpa uv atau Poetry, buildpack akan menggunakan uv secara default untuk semua versi Python yang didukung.
Titik entri dengan file pyproject.toml
Saat Anda men-deploy aplikasi dengan file pyproject.toml, bukan menggunakan file
requirements.txt, buildpack Python akan menggunakan metode
lain untuk menentukan titik entri. Untuk mengetahui informasi tentang cara mengonfigurasi
titik entri aplikasi dengan file requirements.txt, lihat Titik entri aplikasi.
Buildpack menelusuri titik entri dalam urutan prioritas berikut:
Jika
Procfileada di direktori root Anda, atau Anda mengonfigurasi variabel lingkunganGOOGLE_ENTRYPOINT, konfigurasi ini akan selalu menggantikan titik entri yang ditentukan oleh skrippyproject.toml.Buildpack Python menggunakan skrip kustom yang Anda konfigurasi di bagian
[tool.poetry.scripts]dan[project.scripts]. Jika Anda mengonfigurasi skrip yang menyertakanstart, ini adalah titik entri Anda. Misalnya,poetry run startatauuv run start.Jika Anda tidak mengonfigurasi skrip
start, tetapi Anda menentukan skrip lain, skrip yang Anda tentukan adalah titik entri default. Misalnya,poetry run mycmdatauuv run mycmd.
Tidak seperti build berbasis requirements.txt, buildpack Python tidak otomatis menginstal gunicorn untuk project pyproject.toml. Untuk menggunakan
gunicorn atau server lainnya, Anda harus menambahkannya secara eksplisit ke dependensi dalam file pyproject.toml.
Jika Anda tidak mengonfigurasi skrip
kustom dalam file pyproject.toml, buildpack akan mencoba
mendeteksi framework umum, seperti gunicorn, uvicorn, atau fastapi dari
dependensi pyproject.toml Anda dan menentukan titik entri default.