在运行的主函数中,导入自己设定的.py文件(设置的一个类),或者导入tensorflow包时,会出现问题:AttributeError: module 'google.protobuf.internal.containers' has no attribute 'MutableMapping'。

解决方法:

(一)检查protoc和protobuf的版本是否一致

1.这里用的是anaconda3, 在开始处找到anaconda3(64 bit)文件下的anaconda prompt,打开。

2.打开之后是下面的。(注意:这里与从电脑中用Win+R打开的运行窗口中输入cmd的不一样)

从anaconda prompt 打开的

 用Win+R打开的运行窗口中输入cmd的(不一样的)

3.因为自己当初在pycharm中环境配置时,专门设置了一个文件夹为tensorflow-1.13.2(用来将所有下载的库放进来),我所有的程序也是基于此文件夹配置的,所以我需要先打开该文件夹,再查看protoc和protobuf的版本。

先打开该文件夹:输入 conda activate tensorflow-1.13.2后会出现(tensorflow-1.13.2)即表明进入设置的文件夹中

进入文件中,先后输入 protoc --version ; 再输入 pip show protobuf 。分别查看protoc和protobuf的版本,如果不一样,就安装一样即可。如果一样,问题还没有解决,就看第二种方法。

 

(二)查看源文件,这里注意,因为我设有自己专门管理库的文件,并设在D盘

文件的路径是:

D:/anaconda3/envs/tensorflow-1.13.2/Lib/site-packages/google/protobuf/internal/container.py’

(注意:前面标红的地址,一定要对应平常库下载的地址或者对应程序运行环境的地址,前面的地址因每个人的设置也都不同)

中添加一行代码:
from collections.abc import MutableMapping 即可

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐