web-dev-qa-db-ja.com

モジュール「google.protobuf.descriptor_pool」を取得すると、my python script

私はpythonを初めて使用し、他の人が書いたpythonスクリプトを使用していました。別のPCで問題なく実行していました。クーペをインストールするだけでした。 pip3google-cloudgoogle-cloud-bigquerypandasを含むパッケージ。

同じパッケージを別のPCにインストールすると、スクリプトを実行できなくなります。最初に次のエラーが表示されます。

module = 'google.protobuf.descriptor_pb2' TypeError: expected bytes, Descriptor found

ただし、パージ/再インストール/更新されたパッケージで、protobuf3およびprotobuf-py3パッケージも追加すると、エラーが次のメッセージに更新されます。

from google.cloud import bigquery
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/bigquery/__init__.py", line 35, in <module>
    from google.cloud.bigquery.client import Client
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/bigquery/client.py", line 50, in <module>
    import google.cloud._helpers
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/cloud/_helpers.py", line 33, in <module>
    from google.protobuf import duration_pb2
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/protobuf/duration_pb2.py", line 8, in <module>
    from google.protobuf import symbol_database as _symbol_database
  File "/home/mobeen/.local/lib/python3.6/site-packages/google/protobuf/symbol_database.py", line 193, in <module>
    _DEFAULT = SymbolDatabase(pool=descriptor_pool.Default())
AttributeError: module 'google.protobuf.descriptor_pool' has no attribute 'Default'

。これに関するヘルプやリードはありがたいです

5
Mobeen

実際、同じようなケースに遭遇しました。2つのパッケージがprotobufpython3-protobufにインストールされていました。私は実際にこれの根本的な原因を知りませんが、明らかにそれを行うとき:

pip install protobuf
pip install python3-protobuf

あなたが説明したエラーが発生している、それらはあなたにいくつかの異なるバージョンを与えているように見えます、それらの2つのパッケージが重複するファイルを持っているなど.

私にとっての解決策は、インストールの順序を逆にすることでした(最初に両方をアンインストールしてください)。

pip install python3-protobuf
pip install protobuf

あるいは単に

pip install python3-protobuf protobuf

これがここの誰にも役立つことを願っています。

0
Amit Maimon