Buildpacks support language-idiomatic configuration through environment variables.
Specifying the Python Version
By default the Python Runtime buildpack uses the latest stable version of the Python interpreter. If your application requires a specific version, you can specify one by including a .python-version
file in your application's root directory.
3.9.9
Using GOOGLE_PYTHON_VERSION
It is also possible to specify the Python version via the
GOOGLE_PYTHON_VERSION
environment variable.
If both configurations are set, the GOOGLE_PYTHON_VERSION
value takes
precedence over the .python-version
file. By default, when both the
.python-version
file and GOOGLE_PYTHON_VERSION
environment variable are not
specified, then the latest LTS version of Python is used.
To configure the buildpack to use Python 3.10 when deploying your app:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.10.x"
You can also use a project.toml
project descriptor to encode
the environment variable alongside your project files. See instructions on
building the application with environment variables.
Specifying dependencies with pip
The Python buildpack supports managing application dependencies using pip. Your application dependencies should be declared in a requirements.txt
file the root directory.
The requirements.txt
file contains one line per package. Each line contains
the package name, and optionally, the requested version. For more details, see
the requirements.txt
reference.
The following is an example requirements.txt
file:
requests==2.20.0 numpy
Configuring pip
It is possible to configure the behavior of pip using environment variables:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Private dependencies from Artifact Registry
An Artifact Registry Python repository
can host private dependencies for your Python function. When building an application on
Cloud Build, the Python buildpack will automatically generate Artifact Registry
credentials for the Cloud Build service account.
You only need to include the Artifact Registry URL in your requirements.txt
without generating additional credentials. For example:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Application entrypoint
The Python buildpack uses Gunicorn
as the default WSGI HTTP server for your workload. Apps built with the Python
buildpack start the gunicorn
process with default settings,
similar to running:
gunicorn --bind :8080 main:app
Customizing the application entrypoint
You can override the Gunicorn defaults, entrypoint
defaults, and customize your application's start command by
either using a Procfile
or an environment variable.
You can create a Procfile
with your custom settings in the root directory.
Example:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Alternatively, you can use the GOOGLE_ENTRYPOINT
environment variable with
the pack
command. Example:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
Environment Variables
The Python buildpack supports the following environment variables to customize your container
PIP_<key>
See pip documentation.
Example: PIP_DEFAULT_TIMEOUT=60
sets --default-timeout=60
for pip
commands.