首页 > 解决方案 > 获取模块'google.protobuf.descriptor_pool'在我的python脚本中没有属性'Default'

问题描述

我是 python 新手,正在使用其他人编写的 python 脚本。我在另一台PC上运行良好。只需要安装一些软件包,包括pip3,和.google-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'

.任何帮助或线索将不胜感激

标签: pythonpython-3.xpipgoogle-bigqueryprotocol-buffers

解决方案


我通过卸载protobuf解决了这个问题:

pip3 uninstall protobuf

pip3 uninstall python3-protobuf

注意:您应该重复此命令,直到收到没有名为 protobuf 的包的消息。

之后执行:

pip3 install protobuf

只安装 protobuf ,不要安装 python3-protobuf

希望这个解决方案可以帮助你。


推荐阅读