0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Cloud SDKで「AttributeError: module 'google._upb._message' has no attribute 'MessageMapContainer'」エラーが出た時の解決法

Posted at

ラズパイにGoogle Cloud SDKを使おうとしたら...

今回は、Raspberry Pi上のPython仮想環境(Python 3.11)でGoogle TTSを使用するために、Google Cloud SDKを使おうとしたところ、謎のエラーに遭遇しました。このエラーは、Google Cloud SDKのアップデート中に発生しました。

Raspberry Piなどの限られたリソースのデバイスでSDKを動かす場合や、特定のバージョンのPythonで開発を進める場合に、同様の問題に出くわすかもしれません。以下にその解決方法をまとめておきます。

どんなエラーが出たの?

Google Cloud SDKをインストールして、アップデートしようとしたときにこんなエラーが出ました。

ERROR: gcloud crashed (AttributeError): module 'google._upb._message' has no attribute 'MessageMapContainer'

「MessageMapContainerがない」と言われても、なんのことやら…

なぜこのエラーが起こるの?

調べてみると、このエラーは Google Cloud SDKの内部で使っているライブラリ(protobufとか)にバージョンの不一致がある せいで発生するらしい。
簡単に言えば、SDKの部品たちが「お前、ちょっと古くない?」って喧嘩してる ような感じです。

解決方法

解決方法は簡単!SDKで使っているライブラリのバージョンを調整してあげればOKです。

手順

  1. 問題のあるライブラリを入れ直す
    まずは、proto-plusってライブラリのバージョンを調整します。
pip install proto-plus==1.24.0.dev1

でも、これだけだと次にまた別の依存関係で怒られることがあります。なので、protobufというライブラリもインストールし直しましょう。

pip install protobuf==5.26.1
  1. SDKを再アップデート!
    ここまでできたら、もう一度Google Cloud SDKをアップデートします。
gcloud components update

ちゃんとアップデートできれば、エラー解決です!👍

エラーの原因を避けるためのヒント

Google Cloud SDKやPythonのライブラリたちは、たまに「お前古すぎ!」みたいに言い合うので、重要なプロジェクトをやる前にはライブラリのバージョン確認をすると安心です。

まとめ

Google Cloud SDKで「MessageMapContainerがない!」と言われても慌てないで、ライブラリを入れ直せばOK!って感じです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?