【发布时间】:2020-07-11 11:28:35
【问题描述】:
我有一个处理来自队列的消息的 Google Cloud 函数。当我将所有模块放在函数的根目录中时(main.py 和requirements.txt live)一切正常。如果我将模块移动到本地包中,如 here in the docs. 所示,那么当我通过使用云控制台上传 Zip 文件来部署该功能时,我会收到一条错误消息,指出 Build failed: Build error details not available 没有其他信息。
.
├── main.py
├── module_one.py
├── module_two.py
└── requirements.txt
在我上传的档案的根目录下工作得很好。
.
├── main.py
├── requirements.txt
├── local_package_one/
│ ├── __init__.py
│ └── module_one.py
└── local_package_two/
├── __init__.py
└── module_two.py
赚了我Build failed: Build error details not available。在第二个配置中,我更新了所有受影响的import 语句。我最初怀疑requirements.txt 文件,因为它没有在示例中显示,但here 他们声明它应该可以正常工作。那里的示例还显示了一个以该函数命名的顶级文件夹,因此我尝试将其放在存档的根目录中,其中包含所有内容并得到相同的结果。
我改变了进口来源
from module_one import MyClass
到
from local_package_one.module_one import MyClass
【问题讨论】:
-
您能否提供更多详细信息?您更新后的导入是什么样的?
-
我编辑了帖子以阐明导入更改。
-
如果你尝试在本地调用你的函数会发生什么?
-
我不得不承认我不确定如何在本地运行整个 shebang。我有 PubSub 模拟器在本地运行,并且可以发布到该函数应该收听的主题。我还可以使用与
main.py相同的目录中的functions-framework --target myFunction之类的函数框架启动我的函数,它会启动并在没有任何错误的情况下进行侦听。我正在努力将函数链接到 Pub/Sub,或者请求看起来像用 curl 模仿一个。
标签: python-3.x google-cloud-platform google-cloud-functions