获取模块“google.protobuf.descriptor_pool”在我的python脚本中没有属性“Default”

2024-06-17 08:12:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,使用的是其他人编写的python脚本。我在另一台电脑上运行得很好。只需安装一些包,包括pip3google-cloudgoogle-cloud-bigquerypandas

现在,当我在另一台电脑上安装相同的软件包时,我无法运行脚本。首先显示以下错误:

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'

.在此方面的任何帮助或线索都将不胜感激


Tags: pyimportcloudhomelibpackageslocalgoogle
3条回答

我先执行了两次就解决了这个问题

pip3 uninstall protobuf

终端第二次返回

Found existing installation: protobuf 3.6.1
Not uninstalling protobuf at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'protobuf'. No files were found to uninstall.

然后我手动移除protobuf

sudo rm -r /usr/lib/python3/dist-packages/google/protobuf*
sudo rm -r /usr/lib/python3/dist-packages/protobuf*

最后我执行了

pip3 install --upgrade protobuf

问题解决了

你也试过这个吗

“我通过删除冗余protobuf文件解决了安装后导入tensorflow时显示属性错误的问题:'module'对象没有属性'Default'

原因是一些google/protobuf/descriptor_pool.py没有定义“默认值”。这通常发生在protobuf的旧版本上,所以我成功升级了,但问题没有解决。通过检查“google/protobuf”的路径和搜索,我发现它存在于“/usr/local/lib/python2.7/dist packages/google/protobuf/”和“/usr/lib/python2.7/dist-packages/google/protobuf/”。前一个有“Default”属性,但第二个没有。 我尝试导入google.protobuf和google.protobuf。文件,它显示“/usr/lib/python2.7/dist packages/google/protobuf/init.pyc”。我删除了/usr/lib/python2.7/dist-packages/google/protobuf并尝试导入tensorflow,成功。”

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

pip3 uninstall protobuf

pip3 uninstall python3-protobuf

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

然后执行:

pip3 install protobuf

只安装protobuf,不要安装python3 protobuf

希望这个解决方案能对您有所帮助

相关问题 更多 >