我是python新手,使用的是其他人编写的python脚本。我在另一台电脑上运行得很好。只需安装一些包,包括pip3
、google-cloud
、google-cloud-bigquery
和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'
.在此方面的任何帮助或线索都将不胜感激
我先执行了两次就解决了这个问题
终端第二次返回
然后我手动移除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
希望这个解决方案能对您有所帮助
相关问题 更多 >
编程相关推荐