文档(https://developers.google.com/appengine/docs/python/datastore/functions)警告GAE不支持协议缓冲区的开源实现(https://code.google.com/p/protobuf)。我找不到任何其他提及支持的内容。
此外,我不清楚哪种实现与GCD(https://developers.google.com/datastore/docs/apis/v1beta2/proto)API兼容。
如果我pip install protobuf,那么我从protoc生成的python代码中得到以下错误:
ImportError:没有名为protobuf的模块
我猜这是因为GAE提供的系统路径上有一个不支持protobuf的“google”软件包?有很多黑客/解决方法(例如,https://code.google.com/p/protobuf-gae-hack/)。
protobuf有官方支持吗?是否有人在不同的Google Cloud产品(例如,GAE,GCE,GCD)中可靠地使用PB?
谢谢,
RB
答案 0 :(得分:3)
可以将开源protobuf库与app引擎一起使用,但您必须合并模块路径,以便系统“google.appengine”'模块可以与google.protobuf'一起访问。例如,如果您使用pip在项目的lib /目录中安装protobuf,则以下代码将lib / google路径与系统提供的google路径合并。
import os
lib = os.path.join(os.path.dirname(__file__), 'lib')
sys.path.insert(0, lib)
import google
google.__path__.append(os.path.join(lib, 'google'))