Google Cloud Function - ImportError:无法从“google.cloud”(未知位置)导入名称“pubsub”

Jed*_*Jed 7 python git google-cloud-platform google-cloud-pubsub google-cloud-functions

我正在部署一个谷歌云函数,它将启动其他谷歌云函数google.cloud.pubsub_v1,我收到了这个错误ImportError: cannot import name 'pubsub' from 'google.cloud' (unknown location)

我的requirements.txt文件的开头是这样的

# Function dependencies, for example:
# package>=version
google-cloud-pubsub
....
Run Code Online (Sandbox Code Playgroud)

我的 main.py 脚本的开头如下所示:

import base64
import json
from google.cloud import pubsub_v1

publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(<PROJECT_ID>, <PUBSUB_TOPIC>)
Run Code Online (Sandbox Code Playgroud)

我正在从 Google Cloud Source Repository 部署此代码。我已经通读了这篇关于我的错误的SO 帖子,但这个问题似乎是关于客户端应用程序中出现的这个错误。我的错误是在部署过程中由 Google Cloud 函数本身生成的。我无权sudo使用 Google 用来运行我的进程的自动创建的 VM,对吗?我应该能够从requirements.txt文件中解决这个问题,但我尝试过的任何东西似乎都不起作用。

更令人沮丧的是,当我在基于网络的 Google 函数编辑器的“内联编辑器”中放置相同的代码时,我没有收到错误消息。我只在从存储库加载代码时收到此错误。

存储库中的当前文件结构如下所示:

.
??? package
|   ??? main.py
|   ??? script1.py
|   ??? script2.py
??? package2
??? ...
??? requirements.txt
Run Code Online (Sandbox Code Playgroud)

由于我在这个 SO Question 中遇到的问题,我将 main.py 移到了一个包中

关于如何解决此导入错误的任何想法?

Dus*_*ram 5

您的main.py文件和requirements.txt文件应该在同一目录中,并且这也应该是您从中部署函数的同一目录。

此外,该google-cloud软件包已弃用,不应与其他google-cloud-*软件包一起使用。您应该将其从requirements.txt文件中删除。