I am deploying a Google Cloud Function that will kick off other Google Cloud Functions using google.cloud.pubsub_v1
and I'm getting this error ImportError: cannot import name 'pubsub' from 'google.cloud' (unknown location)
The beginning of my requirements.txt file looks like this
# Function dependencies, for example:
# package>=version
google-cloud-pubsub
....
The beginning of my main.py script looks like this:
import base64
import json
from google.cloud import pubsub_v1
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(<PROJECT_ID>, <PUBSUB_TOPIC>)
I am deploying this code from a Google Cloud Source Repository. I have read through this SO post about my error, but that question appears to be about this error arising in a Client application. My error is being generated by the Google Cloud function itself during the deploy process. I don't have sudo
rights to the auto-created VM that Google is using to run my process, do I? I should be able to resolve this issue from the requirements.txt
file, but nothing I've tried seems to be working.
What's more frustrating is that when I put this same code in the "Inline editor" on the web-based Google Function editor, I don't get an error. I only get this error when loading the code from the repository.
The current file structure in the repository looks something like this:
.
├── package
| ├── main.py
| ├── script1.py
| └── script2.py
├── package2
├── ...
└── requirements.txt
I moved main.py inside of a package because of issues I was having in this SO Question
Any ideas on how to resolve this import error?
Your main.py
file and requirements.txt
file should be in the same directory, and this should also be the same directory you're deploying your function from.
Also, the google-cloud
package is deprecated and shouldn't be used with other google-cloud-*
packages. You should remove it from your requirements.txt
file.