由于业务需要,项目中需要用到google的一种高效的可扩展的结构化数据存储方式protocol buffer(以下简称pb)。很多人可能对这个新东西不熟悉,大家都知道xml,json,确很少听过pb,下面我就粗劣总结一下pb在mac环境下的搭建以及用python解析的简单过程。
首先下载最新pb源码,放到相应的文件夹解压。
安装步骤如下(强调一下:如安装不成功,就以管理员身份安装即在每句命令前加上sudo):
这句如果解压完了就不需要了tar -xzf protobuf-2.1.0.tar.gz
cd protobuf-2.1.0
./configure --prefix=$INSTALL_DIR(要安装的目录,以管理员身份安装可以省去,系统会默认一个位置)
make
make check
make install
如果一切顺利的话,可以用下面语句检测:
protoc --version (会输出版本号,如果提升command not found,那就那烦你重新安装,记着以管理员身份运行)
这些做完之后,我们可以简单的了解一下pb了:
首先我们需要编写一个 proto 文件,定义我们程序中需要处理的结构化数据,在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。代码清单 1 显示了例子应用中的 proto 文件内容。
清单 1. proto 文件
package lm;
message Person
{
required int32 id = 1; // ID
required string str = 2; // str
optional int32 opt = 3; //optional field
}
|
一个比较好的习惯是认真对待 proto 文件的文件名。比如将命名规则定于如下:
packageName.MessageName.proto
|
在上例中,package 名字叫做 lm,定义了一个消息 helloworld,该消息有三个成员,类型为 int32 的 id,另一个为类型为 string 的成员 str。opt 是一个可选的成员,即消息中可以不包含该成员。
接下来我们编译这个proto文件试试,看能不能成功:
假设您的 proto 文件存放在 $SRC_DIR 下面,您也想把生成的文件放在同一个目录下,则可以使用如下命令:
protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/a.proto
如果你地址写对了,并且文件名不以数字等非法字符开头的话,你应该正在乐着了。你应该在你的
$DST_DIR目录下看到多了一个文件,a_pb2.py,打开看看,其中有一部分你应该没有问题吧,
至少你上面写的pb中的那几个属性能找到吧,还有class,不说了,注意,下面才是关键:
编译完之后怎么用了,要是不会用,那上面不就白干了吗?
我们自定义一个text.py文件,代码如下:
import a_pb2 p = a_pb2.Person() #print p.__doc__ p.name = "gtts" # name应该很熟悉了吧
print p.name
运行这段代码,悲剧的是报错了:No module named google.protobuf
怎么解决了,好像我们缺少东西,解决方法如下:
执行 python setup.py install进行安装,一般可能需要如“setuptools-0.6c11-py2.6.egg”的文件,将其拷贝到上述python目录,
【如果可以连外网,则可省略上一步】确认安装好的命令为sudo python ./setup.py test (别忘了sudo,不然你成功不了的)
如果配置成功的话,提示如下:
---------------------------------------------------
............省略很多字...........
Ran 193 tests in 0.520s
OK
----------------------------------------------------
好了,庆贺吧!
|
分享到:
相关推荐
编译好的protoc 以及libprotobuf.lib、libprotobuf-lite.lib和libprotoc.lib,还有用到的头文件
Protocol Buffer 2.5.0 jar包
protocolbuffer案例代码
用Java语言实现的利用Protocol Buffer进行数据保存的实例,具体的体现是一个学生记录管理。一个Demo,为了帮大家理解Protocol Buffer的。
Protocol Buffer使用
C++实例Protocol Buffer技术详解,感兴趣的朋友可以了解下
protocol buffer jar架包和Windows下的代码生成工具(protobuf-java-2.5.0.jar protoc-2.5.0-win32)
Protocol Buffer sublime text 3插件,官方网址: https://github.com/vihangm/sublime-protobuf-syntax
Protocol Buffer文件编译成Java文件所需要的相关工具,jar包,exe编译工具等。
01 Protocol Buffer技术详解(语言规范).doc
Android端中使用Netty+Protocol Buffer实现聊天室功能
Protocol Buffers被定义为一种数据描述语言(Data Description Language,DDL),广泛的应用于Google内部,用于结构化数据的描述、传输和存储。尽管其功能和用途与XML基本相似,但是 Protocol Buffers更为轻便。...
Protocol_Buffer官网文档中文版
Python调用序列化数据工具Protocol Buffers——protobuf https://xercis.blog.csdn.net/article/details/109204030
google的protocol buffer 3.0.0最新beta版本,在Ubuntu 14.04下编译通过并且运行,也进行过交叉编译运用于arm
protocolbuffer技术用到的源码包及安装包
源代码+工具(包括win32的)
比较详细的Protocol_Buffer中文翻译