Protobuf for Python和protoc版本匹配仍然断言失败

时间:2017-12-03 12:55:23

标签: string tensorflow null protocol-buffers protoc

我收到此错误:

  

./ google / protobuf / generated_message_util.h:86:const string&   google :: protobuf :: internal :: GetEmptyStringAlreadyInited():断言   `empty_string_!= __null'失败。

我一直试图解决这个问题。 所以我项目中的流程如下:

我有一个C ++项目,我在Ubuntu 16.10上使用CMake编译。经过一些处理之后,我想将数据发送到使用Keras进行机器学习的Python脚本。

现在这两个脚本完全独立地工作。我想将数据直接发送到Python脚本。所以我通过引用这个link

在C ++中嵌入了Python

这又适用于不导入keras的Python脚本。

现在当我在这个Python脚本中导入keras时,我得到了上面的错误,尽管它们都是独立运行的。

首先,我遇到了libprotobuf和protoc版本不匹配的错误,如下所示:

  

使用TensorFlow后端。   [libprotobuf FATAL google / protobuf / stubs / common.cc:67]此程序需要3.5.0版协议缓冲区运行时库,   但安装的版本是3.0.0。请更新你的图书馆。如果   你自己编译了程序,确保你的标题是   从与协议缓冲区相同的版本作为链接时库。   (" google / protobuf / descriptor.pb.cc"中的版本验证失败。)       在抛出' google :: protobuf :: FatalException'的实例后终止调用         what():此程序需要协议缓冲区运行时库的3.5.0版本,但安装的版本为3.0.0。请   更新你的图书馆。如果您自己编译了程序,请确保   您的标头来自与协议缓冲区相同的版本   你的链接时间库。 (版本验证失败了   "谷歌/ protobuf的/ descriptor.pb.cc&#34 ;.)       中止(核心倾销)

我使用apt-get安装了protoc(apt-get上的最新版本是3.0.0),因为我发现其中一个答案你不需要protoc 3.5.0才能工作。 pip3 install protobuf安装protobuf 3.5.0,导致错配错误消息。

所以我卸载了这个Python protobuf版本并使用pip3 install protobuf==3.0.0安装了旧版本。这删除了不匹配错误消息。

但是现在我收到了上述错误消息。我还发现由于Keras的Tensorflow依赖性而出现错误消息

我该如何解决这个问题?

请帮忙

0 个答案:

没有答案