私はpythonを初めて使用し、他の人が書いたpythonスクリプトを使用していました。別のPCで問題なく実行していました。クーペをインストールするだけでした。 pip3
、google-cloud
、google-cloud-bigquery
、pandas
を含むパッケージ。
同じパッケージを別の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'
。これに関するヘルプやリードはありがたいです
実際、同じようなケースに遭遇しました。2つのパッケージがprotobuf
とpython3-protobuf
にインストールされていました。私は実際にこれの根本的な原因を知りませんが、明らかにそれを行うとき:
pip install protobuf
pip install python3-protobuf
あなたが説明したエラーが発生している、それらはあなたにいくつかの異なるバージョンを与えているように見えます、それらの2つのパッケージが重複するファイルを持っているなど.
私にとっての解決策は、インストールの順序を逆にすることでした(最初に両方をアンインストールしてください)。
pip install python3-protobuf
pip install protobuf
あるいは単に
pip install python3-protobuf protobuf
これがここの誰にも役立つことを願っています。