或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容

Posted

技术标签:

【中文标题】或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容【英文标题】:OR Tools compiled against version 3.5.1 of the Protocol Buffer, not compatible with installed version 【发布时间】:2019-04-11 12:15:06 【问题描述】:

我使用pip install ortools 在我的 Mac 上安装了 OR Tools。现在我尝试在https://developers.google.com/optimization/routing/vrp#solution 上运行谷歌给出的示例代码。

在导入 from ortools.constraint_solver import pywrapcp 时,程序崩溃并显示以下消息:

[libprotobuf FATAL google/protobuf/stubs/common.cc:86] 该程序是针对 Protocol Buffer 运行时库的 3.5.1 版本编译的,该版本与已安装的版本 (3.7.1) 不兼容。联系程序作者获取更新。如果您自己编译程序,请确保您的标头来自与链接时库相同版本的 Protocol Buffers。 (“ortools/gen/ortools/data/rcpsp.pb.cc”中的版本验证失败。) libc++abi.dylib:以 google::protobuf::FatalException 类型的未捕获异常终止:该程序是针对 Protocol Buffer 运行时库的 3.5.1 版本编译的,该版本与已安装的版本 (3.7.1) 不兼容.联系程序作者获取更新。如果您自己编译程序,请确保您的标头来自与链接时库相同版本的 Protocol Buffers。 (“ortools/gen/ortools/data/rcpsp.pb.cc”中的版本验证失败。)

我删除了protobuf的3.7.1版本,在pip的帮助下安装了3.5.1:

Name: protobuf
Version: 3.5.1
Summary: Protocol Buffers
Home-page: https://developers.google.com/protocol-buffers/
Author: protobuf@googlegroups.com
Author-email: protobuf@googlegroups.com
License: 3-Clause BSD License
Location: /Users/Martijn/anaconda/lib/python3.5/site-packages
Requires: setuptools, six

但我仍然收到相同的错误消息。。有人遇到过这个问题吗?

或工具:

Name: ortools
Version: 6.7.4973
Summary: Google OR-Tools python libraries and modules
Home-page: https://developers.google.com/optimization/
Author: Google Inc
Author-email: lperron@google.com
License: Apache 2.0
Location: /Users/Martijn/anaconda/lib/python3.5/site-packages
Requires: six, protobuf

由于某种原因,我无法使用 pip 升级到更新版本的 OR 工具。

【问题讨论】:

【参考方案1】:

你能升级到 python 3.6 吗? 最新版本 (7.0) 在 mac 上支持 2.7、3.7 和 3.7。

请注意,它们是使用 3.6.1 构建的。 下一个版本将包括 3.7.1。

【讨论】:

谢谢 Laurent,这对我来说很完美!对于有同样问题的人:我使用以下命令使用 anaconda 升级到 Python 3.6.8(最新 3.6 版本):conda install python==3.6.8.

以上是关于或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容的主要内容,如果未能解决你的问题,请参考以下文章

如何将已编译的协议缓冲区转换回 .proto 文件?

协议缓冲区错误版本

运行 protoc 时是不是可以指定输出版本?

选择特定版本的 Visual Studio 命令行工具包并针对特定版本的 C++ 运行时环境编译文件

针对 iOS 的 Unity3D 中的协议缓冲区

安全测试工具Metasploit与漏洞扫描(上)