获取模块';protobuf.descriptor#u pool';没有属性';默认值';在我的python脚本中

获取模块';protobuf.descriptor#u pool';没有属性';默认值';在我的python脚本中,python,python-3.x,pip,google-bigquery,protocol-buffers,Python,Python 3.x,Pip,Google Bigquery,Protocol Buffers,我是python新手,使用的是其他人编写的python脚本。我在另一台电脑上运行得很好。只需安装一些软件包,包括pip3,googlecloud,googlecloudbigquery和pandas 现在,当我在另一台电脑上安装相同的软件包时,我无法运行脚本。首先显示以下错误: module = 'google.protobuf.descriptor_pb2' TypeError: expected bytes, Descriptor found 但是,在清除/重新安装/更新的软件包中,并添加

我是python新手,使用的是其他人编写的python脚本。我在另一台电脑上运行得很好。只需安装一些软件包,包括
pip3
googlecloud
googlecloudbigquery
pandas

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

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'
从google.cloud导入bigquery
文件“/home/mobeen/.local/lib/python3.6/site packages/google/cloud/bigquery/_init__.py”,第35行,在
从google.cloud.bigquery.client导入客户端
文件“/home/mobeen/.local/lib/python3.6/site packages/google/cloud/bigquery/client.py”,第50行,在
导入google.cloud.\u帮助程序
文件“/home/mobeen/.local/lib/python3.6/site packages/google/cloud/_helpers.py”,第33行,在
从google.protobuf导入持续时间\u pb2
文件“/home/mobeen/.local/lib/python3.6/site packages/google/protobuf/duration_pb2.py”,第8行,在
从google.protobuf导入symbol_数据库作为_symbol_数据库
文件“/home/mobeen/.local/lib/python3.6/site packages/google/protobuf/symbol_database.py”,第193行,在
_DEFAULT=SymbolDatabase(pool=descriptor\u pool.DEFAULT())
AttributeError:模块“google.protobuf.descriptor\u pool”没有属性“Default”
.在此方面的任何帮助或线索都将不胜感激

您也尝试过吗

“我通过删除冗余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
python3protobuf
。我实际上不知道这个问题的根本原因,但显然当你这么做的时候:

pip install protobuf
pip install python3-protobuf
您描述的错误正在发生,看起来它给了您一些不同的版本,就像这两个包有重叠的文件,它们相互覆盖或其他什么

对我来说,解决方案只是颠倒安装顺序(确保先卸载它们):

或者只是

pip install python3-protobuf protobuf

希望这对这里的任何人都有帮助。

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

pip3卸载protobuf

pip3卸载python3协议

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

然后执行:

pip3安装protobuf

只安装protobuf,不要安装python3 protobuf


希望此解决方案能对您有所帮助。

原因可能是您用于运行python程序的解释器使用的是以前版本的google.protobuf

您可以保证它在解释器中运行

>>> import google.protobuf
>>> print google.protobuf.__version__
然后比较它在终端中的运行情况

$pip show protobuf
如果版本不同,这就是原因

所以我建议直接从python解释器控制台删除这个包

>>> pip uninstall protobuf -y
之后,您甚至可以从python控制台直接安装该包

>>> pip install protobuf

之后你就可以走了✌️

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

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

问题解决了

有很多建议,其中有没有有用的?谢谢@DustinIngram,是的。都试过了你的问题解决了吗?@rmesteves,还没有
pip3 install --upgrade protobuf