我收到此错误:
./ 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依赖性而出现错误消息
我该如何解决这个问题?
请帮忙