Función Google Cloud – ImportError: no se puede importar el nombre ‘pubsub’ desde ‘google.cloud’ (ubicación desconocida)

Estoy implementando una función de Google Cloud que activará otras funciones de Google Cloud con google.cloud.pubsub_v1 y recibo este error ImportError: cannot import name 'pubsub' from 'google.cloud' (unknown location)

El comienzo de mi archivo Requirements.txt se ve así

 # Function dependencies, for example: # package>=version google-cloud-pubsub .... 

El comienzo de mi script main.py se ve así:

 import base64 import json from google.cloud import pubsub_v1 publisher = pubsub_v1.PublisherClient() topic_path = publisher.topic_path(, ) 

Estoy implementando este código desde un repository de Google Cloud Source. He leído esta publicación SO sobre mi error, pero esa pregunta parece ser acerca de este error que surge en una aplicación del Cliente. Mi error lo genera la propia función Google Cloud durante el proceso de implementación. No tengo derechos de sudo para la máquina virtual creada automáticamente que Google está utilizando para ejecutar mi proceso, ¿verdad? Debería poder resolver este problema desde el archivo Requirements.txt, pero nada de lo que he intentado parece estar funcionando.

Lo que es más frustrante es que cuando coloco este mismo código en el “Editor en línea” en el editor de funciones de Google basado en la web, no obtengo ningún error. Solo obtengo este error al cargar el código desde el repository.

La estructura de archivos actual en el repository se parece a esto:

 . ├── package | ├── main.py | ├── script1.py | └── script2.py ├── package2 ├── ... └── requirements.txt 

Moví main.py dentro de un paquete debido a problemas que tenía en esta pregunta SO

¿Alguna idea sobre cómo resolver este error de importación?

Su archivo main.py y el archivo main.py deben estar en el mismo directorio, y este también debe ser el mismo directorio desde el que está implementando su función.

Además, el paquete google-cloud está en desuso y no debe utilizarse con otros paquetes google-cloud-* . Debe eliminarlo de su archivo Requirements.txt.