簡體   English   中英

ModuleNotFoundError:沒有名為“google.cloud.location”的模塊

[英]ModuleNotFoundError: No module named 'google.cloud.location'

我們有一個使用 firestore 的應用程序。 它運行在標准谷歌應用引擎上的 Python 3.x 上。 該應用程序運行良好,直到今天早上我們嘗試運行新版本時。 新版本的部署執行沒有任何錯誤。 requirement.txt 如下——

firebase_admin==3.0.0
sendgrid==6.9.3
google-auth==1.35.0
google-auth-httplib2==0.1.0
jinja2==3.0.3
MarkupSafe==2.0.1
pytz==2021.3
Flask==2.0.2
twilio==6.46.0
httplib2==0.20.2
requests==2.24.0
requests_toolbelt==0.9.1
google-cloud-tasks==2.7.1
google-cloud-logging==1.15.1
googleapis-common-protos==1.54.0
protobuf==3.20.1

我們收到以下錯誤。

  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/services/firestore/client.py", line 55, in <module>

from google.cloud.location import locations_pb2  # type: ignore
ModuleNotFoundError: No module named 'google.cloud.location'

請幫忙。

已更新 (9-24-2022),包含完整錯誤 output。

Traceback (most recent call last):
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/gthread.py", line 92, in init_process
    super().init_process()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/opt/python3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/srv/main.py", line 8, in <module>
    from controllers import server, common, header
  File "/srv/controllers/server.py", line 19, in <module>
    from controllers import basehandler
  File "/srv/controllers/basehandler.py", line 12, in <module>
    from google.cloud import firestore
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore/__init__.py", line 18, in <module>
    from google.cloud.firestore_v1 import __version__
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/__init__.py", line 36, in <module>
    from google.cloud.firestore_v1.async_client import AsyncClient
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/async_client.py", line 45, in <module>
    from google.cloud.firestore_v1.async_transaction import AsyncTransaction
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/async_transaction.py", line 49, in <module>
    from google.cloud.firestore_v1.client import Client
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/client.py", line 44, in <module>
    from google.cloud.firestore_v1.services.firestore import client as firestore_client
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/services/firestore/__init__.py", line 16, in <module>
    from .client import FirestoreClient
  File "/layers/google.python.pip/pip/lib/python3.7/site-packages/google/cloud/firestore_v1/services/firestore/client.py", line 55, in <module>
    from google.cloud.location import locations_pb2  # type: ignore
ModuleNotFoundError: No module named 'google.cloud.location'

看起來谷歌在為其 Python 軟件包設置要求時犯了一個錯誤。

如果您創建一個新的虛擬環境,使用pip install -r安裝,您應該能夠重新創建您在生產中看到的錯誤。

要修復它,我會在您的本地計算機上執行pip list (在仍在工作的環境中)並添加其他已安裝的谷歌包的固定版本,直到它工作。

您可以通過創建一個新的 Python 虛擬環境進行測試,使用pip install -r並查看它是否有效。

不幸的是,這是一個乏味的過程。

我剛才在嘗試將 Python 腳本鏈接到 Firestore 時遇到了這個完全相同的錯誤。 我不知道這是否是一個“正確”的解決方案,但在執行此操作后我讓我的代碼運行並將數據保存到我的 Firestore 數據庫中。

在錯誤消息中,此行指定了導入 google.cloud.location 的文件:

  File "/layers/google.python.pip/pip/lib/python3.10/site-packages/google/cloud/firestore_v1/services/firestore/client.py", line 55, in <module>

如果您打開 client.py 文件並注釋掉第 55 行(“from google.cloud.location import locations_pb2 # type: ignore”),然后再次運行您的代碼,下一條錯誤消息將顯示 google.cloud 所在的其他文件.location 正在導入。 對導入此模塊的所有五個文件重復此過程。 (client.py, base.py, grpc.py, grpc_asyncio.py, async_client.py)

通過搜索代碼,我看到從未使用過 locations_pb2(從 google.cloud.location 導入)。 我懷疑將其完全注釋掉不會影響 firebase_admin 的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM