处理依赖项


您可通过两种方式为使用 Python 编写的 Cloud Functions 函数指定依赖项:使用 pip 软件包管理系统的 requirements.txt 文件,或将本地依赖项与您的函数打包在一起。

不支持使用 Pipfile/Pipfile.lock 标准的依赖项规范。您的项目不应包含这些文件。

使用 pip 指定依赖项

Python 依赖项可通过 pip 进行管理,并在元数据文件 requirements.txt 中表示。此文件必须与包含函数代码的 main.py 文件位于同一目录中。

部署或重新部署您的函数时,Cloud Functions 使用 pip 下载并安装 requirements.txt 文件中声明的依赖项的最新版本。在 requirements.txt 文件中,每个软件包对应一行内容。每行包含软件包名称和(可选)请求的版本。如需了解详情,请参阅 requirements.txt 参考文档

为了防止 build 受到依赖项版本更改的影响,请考虑将依赖项软件包固定到特定版本。

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

functions-framework
requests==2.20.0
numpy

Cloud Functions 框架是所有函数都必需的依赖项。虽然 Cloud Functions 会在创建函数时代表您安装该框架,但为清楚起见,我们建议您将其添加为显式依赖项。

如果函数依赖于专用依赖项,我们建议您将 functions-framework 镜像到您的私有注册表。将镜像的 functions-framework 作为依赖项添加到函数中,以避免从公共互联网安装软件包。

封装本地依赖项

您还可以将依赖项与函数一起进行打包和部署。如果依赖项不能通过 pip 软件包管理系统获取,或者您的 Cloud Functions 环境的互联网访问受限,则此方法很有用。

例如,您可以使用如下所示的目录结构:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

然后,您可以照常使用以下 import 语句从 localpackage 导入代码。

# Code in main.py
from localpackage import script

请注意,此方法不会运行任何 setup.py 文件。包含这些文件的软件包仍可以捆绑,但可能无法在 Cloud Functions 上正常运行。