环境
- tensorflow 1.11.0
- protobuf 3.6.1
问题
在上述环境中import tensorflow
报错
TypeError: __new__() got an unexpected keyword argument 'serialized_options'
查看函数调用栈,调用栈的最后2层与protobuf有关,在网上搜索之后发现问题在于tensorflow 1.11.0
与protobuf 3.6.1
版本不兼容
注:protobuf
是谷歌开发的一个通用序列化库,提供了多种语言的API,打通多语言的进程间数据传递问题。protobuf
与json
和XML
在功能上是类似的,区别在于protobuf
采用二进制存储,相比于纯文本方式,节省了存储空间,提高了网络传输的效率。貌似C++里面用得比较多
解决
将protobuf
版本降为3.6.0
可以解决问题,使用命令
pip install protobuf=3.6.0