Google Protocol Buffers + Pythonから使う

Google Protocol BuffersをPythonから使う

取得

以下から最新の[compiler]と[full source]を両方取得してくる。

https://code.google.com/p/protobuf/downloads/list

ソースを適当に展開したら「protobuf-x.x.x/src」に、Compilerを展開して得られる「protoc.exe」を配置する。
これを忘れると、次のセットアップが失敗するので要注意

セットアップ

基本的には「protobuf-x.x.x/python/readme.txt」にセットアップの仕方が載っているので
以下の手順で上手く行かない場合は、随時参照して欲しい。

$ cd protobuf-x.x.x/python
$ python setup.py build
$ python setup.py test

最後のテストで[OK]と表示されたら

$ python setup.py install

でインストールする。

Dumpする

PythonでProtocol buffersのオブジェクトをdumpしたい場合は
以下の小さなライブラリを使用して、dictに変換すると良い

https://github.com/davyzhang/protobuf-to-dict

僕はdictに変換した後、json形式に変換して出力している。

import json
from protobuf_to_dict import protobuf_to_dict

d = protobuf_to_dict(proto_obj)
print json.dumps( d, indent=2, sort_keys=True, separators=(',', ': '), encoding="utf-8")