protobuf 转换python代码时发生 Expected "required", "optional", or "repeated".错误解决方法
2017-06-19 09:14
771 查看
Google Protocol Buffers 简称 Protobuf,它提供了一种灵活、高效、自动序列化结构数据的机制,可以联想 XML,但是比 XML 更小、更快、更简单。仅需要自定义一次你所需的数据格式,然后用户就可以使用 Protobuf 编译器自动生成各种语言的源码,方便的读写用户自定义的格式化的数据。与语言无关,与平台无关,还可以在不破坏原数据格式的基础上,依据老的数据格式,更新现有的数据格式。
在很多谷歌开源的程序中都大部分用到了protobuf,比如最新开源出来的object_detection中就存在这样的定义。最近想着编译一下这个目标检测识别的程序,发现protobuf居然报了个错误,错误码即如下:
针对这个问题,才发现自己电脑上的protobuf版本是2.5版本(通过命令:protoc --version进行查看),可能原因还是新版本又更新了一些参数,查看了下需求,也发现需要用到2.6版本,所以只能重新进行编译protobuf.高的版本。
于是从https://github.com/google/protobuf/releases?after=v2.6.1下载2.6的数据包。
直接按照传统的 ./configure, make -j4 , sudo make install等方式来进行安装。
这时候还需要一个步骤,需要在/etc/profile中配置一下参数:
export LD_LIBRARY_PATH=/usr/local/lib
不然就会报如下错误:
完成安装后,再重新进行进行代码转换,即可成功。
protoc ./object_detection/protos/*.proto --python_out=.
ndscbigdata@ndscbigdata-Lenovo-Product:~/work/tensorflow/models-master$
这时候,对应的python文件已经生成。
在很多谷歌开源的程序中都大部分用到了protobuf,比如最新开源出来的object_detection中就存在这样的定义。最近想着编译一下这个目标检测识别的程序,发现protobuf居然报了个错误,错误码即如下:
.proto:386:3: Expected "required", "optional", or "repeated".
针对这个问题,才发现自己电脑上的protobuf版本是2.5版本(通过命令:protoc --version进行查看),可能原因还是新版本又更新了一些参数,查看了下需求,也发现需要用到2.6版本,所以只能重新进行编译protobuf.高的版本。
于是从https://github.com/google/protobuf/releases?after=v2.6.1下载2.6的数据包。
直接按照传统的 ./configure, make -j4 , sudo make install等方式来进行安装。
这时候还需要一个步骤,需要在/etc/profile中配置一下参数:
export LD_LIBRARY_PATH=/usr/local/lib
不然就会报如下错误:
protoc: error while loading shared libraries: libprotoc.so.9: cannot open shared object file: No such file or directory
完成安装后,再重新进行进行代码转换,即可成功。
protoc ./object_detection/protos/*.proto --python_out=.
ndscbigdata@ndscbigdata-Lenovo-Product:~/work/tensorflow/models-master$
这时候,对应的python文件已经生成。
相关文章推荐
- 执行make menucofig发生错误“Unable to find the ncurses libraries or the required header files”的解决方法
- 执行make menucofig发生错误“Unable to find the ncurses libraries or the required header files”的解决方法
- 将VARCHAR值""转换为数据类型为"int"的列时发生语法错误!的解决方法
- Outlook Express 收发邮件出现"0x800CCC0F"错误代码解决方法
- VS2005 发布网站出现 "aspnet_merge.exe已退出,代码为1"的错误解决方法
- vc++ classwizard "Parsing error:Number or identifier expected.Input line ....."错误解决
- java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required 错误解决方法
- Access文件(.mdb)导入SQL Server时"错误代码为 0xC0202009"的解决方法
- jsp中上传大文件(200M已测试),存到数据库,易发生连接超时的ie找不到网页的错误,其解决方法。略写代码,参考(.net修改代码应该可以,改天修改)
- 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息"----解决方法
- python 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- SQL2000建表时"MMC检测到此管理单元发生一个错误,建议关闭并重新启动MMC。"的解决方法
- [转]发生 LC.exe 已经退出 代码-1 错误的解决方法
- proto-gen AS3版本的protobuf extension反序列化错误解决方法
- Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误的解决方法
- apue源码make:/usr/include/bits/timex.h:31:7: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ be的解决方法
- Installshield 在安装过程中发生 错误代码:-6001 -6003 -6002 -6004 -6005 -6006等解决方法
- ISA 2004 防火墙自己不能上网,提示"错误代码:12206 代理链循环"的解决方法
- 在VMware上编译linux内核出现VFS: Cannot open root device "LABEL=/" or unknown-block(0,0) 错误的解决方法
- phpStudey2010中进入phpMyAdmin出现"无法在发生错误时创建会话,请检查PHP"的解决方法