首页 > 解决方案 > 如何部署具有共享本地依赖项的 Google Cloud Function?

问题描述

在 Cloud Functions 上部署时,我在使用本地模块时遇到了一些问题 - 任何想法或最佳实践都将不胜感激!

我正在尝试将我的项目的一部分部署为云功能。它使用项目中的一些本地代码,这些代码与其他模块共享——我为此使用了绝对导入。我正在使用 Cloud Repository 进行部署,并在其中说明了函数所在的文件夹 ( parent\cloud_function\)。问题是父包不适用于该设置。

这是项目结构的示例:

├── parent_repo
│   ├── parent
│   │   ├── __init__.py
│   │   ├── config.conf
│   │   ├── config.py
│   │   ├── cloud_function
│   │   │   ├── __init__.py
│   │   │   ├── main.py
│   │   │   └── requirements.txt
│   │   ├── shared_module
│   │   │   ├── __init__.py
│   │   │   ├── package1.py
│   │   │   └── package2.py
│   │   ├── other_module
│   │   │   ├── __init__.py
│   │   │   ├── some_script.py
│   │   │   └── another_script.py
│   │   └── utils.py


在里面parent.cloud_function.main.pyANDparent.other_module.some_script.py我使用:

from parent.shared_module.package1 import some_func
from parent.shared_module.package2 importsome_class

访问共享代码。但是,当尝试在 Cloud Functions 上部署该功能时,由于我假设它只查看文件夹,因此该parent模块不可用。

当然,我可以简单地将所有需要的代码嵌套在cloud_function文件夹中——但从项目的角度来看,这并不理想——因为该代码在其他资源之间共享,并且在逻辑上不属于那里。

有谁知道如何更好地做到这一点?

提前致谢!

标签: pythongoogle-cloud-functionspython-import

解决方案


很快 - 这很困难。

这是Python 运行时 - 指定依赖项描述 -

requirements.txt 文件或将本地依赖项与您的函数一起打包

您可能可以在 Cloud Build 中使用私有依赖项

Deploy a Python Cloud Function with all package dependencies SO 问题中提供了一些想法。


推荐阅读