Skip to content

train.pyを実行したら"ImportError: connot import name 'builder' from 'google.protobuf.internal' ~~"が吐かれる

YusukeYamasaki edited this page May 16, 2024 · 1 revision

タイトル通り。

原因

恐らく、protobufというパッケージのバージョンが悪さをしているのが原因である。で、protobufが依存しているのがTensorBoardっぽいので、TensorBoardのバージョンが悪くてそれに引かれてprotobufのバージョンが悪いものになっている可能性が高い。

解決策

protobufのバージョンだけを上げるのではなく、TensorBoardのバージョンを上げることでprotobufのバージョンも上がる。これでtrain.pyのエラーが解消される。

$ pip install --upgrade tensorboard

実行結果(最後の数行を抜粋)

Using cached tensorboard-2.11.2-py3-none-any.whl (6.0 MB)
Using cached protobuf-3.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.0 MB)
Installing collected packages: protobuf, tensorboard
  Attempting uninstall: protobuf
    Found existing installation: protobuf 4.24.4
    Uninstalling protobuf-4.24.4:
      Successfully uninstalled protobuf-4.24.4
  Attempting uninstall: tensorboard
    Found existing installation: tensorboard 2.8.0
    Uninstalling tensorboard-2.8.0:
      Successfully uninstalled tensorboard-2.8.0
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
wandb 0.12.21 requires Click!=8.0.0,>=7.0, which is not installed.
Successfully installed protobuf-3.20.3 tensorboard-2.11.2

上記コマンド実行時に私の環境だとwandbというパッケージのバージョン周りでエラーが出たが、train.pyは問題なく実行できた。