构建 Python 应用

Buildpack 通过环境变量支持语言惯用配置。

指定 Python 版本

默认情况下,Python 运行时 Buildpack 使用最新的稳定版 Python 解释器。如果您的应用需要使用特定版本,您可以通过在应用的根目录中添加 .python-version 文件来指定版本。

3.9.9

使用 GOOGLE_PYTHON_VERSION

还可以通过 GOOGLE_PYTHON_VERSION 环境变量指定 Python 版本。如果同时设置了这两个配置,则 GOOGLE_PYTHON_VERSION 值优先于 .python-version 文件。默认情况下,如果未指定 .python-version 文件和 GOOGLE_PYTHON_VERSION 环境变量,则系统会使用最新的 LTS 版本的 Python。

要在部署应用时将 Buildpack 配置为使用 Python 3.10,请运行以下命令:

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_PYTHON_VERSION="3.10.x"

您还可以使用 project.toml 项目描述符对环境变量以及项目文件进行编码。请参阅使用环境变量构建应用中的说明。

使用 pip 指定依赖项

Python Buildpack 支持使用 pip 管理应用依赖项。您的应用依赖项应在 requirements.txt 文件的根目录中声明。

requirements.txt 文件中,每个软件包对应一行内容。每行包含软件包名称和(可选)请求的版本。如需了解详情,请参阅 requirements.txt 参考

下面是一个 requirements.txt 文件示例:

requests==2.20.0
numpy

配置 pip

您可以使用环境变量配置 pip 的行为:

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env PIP_DEFAULT_TIMEOUT='60'

来自 Artifact Registry 的专用依赖项

Artifact Registry Python 代码库可以为您的 Python 函数托管专用依赖项。在 Cloud Build 上构建应用时,Python Buildpack 会自动为 Cloud Build 服务账号生成 Artifact Registry 凭据。您只需在 requirements.txt 中添加 Artifact Registry 网址,而不需要生成其他凭据。例如:

--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage

应用入口点

Python Buildpack 使用 Gunicorn 作为工作负载的默认 WSGI HTTP 服务器。使用 Python Buildpack 构建的应用会使用默认设置启动 gunicorn 进程,类似于运行:

gunicorn --bind :8080 main:app

自定义应用入口点

您可以替换 Gunicorn 默认值、入口点默认值,并使用 Procfile 或环境变量自定义应用的启动命令。

您可以在根目录中使用自定义设置创建 Procfile。示例:

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

或者,您可以将 GOOGLE_ENTRYPOINT 环境变量与 pack 命令结合使用。示例:

pack build sample-python \
  --builder gcr.io/buildpacks/builder
  --env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"

环境变量

Python Buildpack 支持使用以下环境变量来自定义容器

PIP_<key>

请参阅 pip 文档

示例PIP_DEFAULT_TIMEOUT=60pip 命令设置 --default-timeout=60