在Windows中使用协议缓冲区

3 投票
3 回答
1409 浏览
提问于 2025-04-18 03:50

我想在Windows上用Python绑定来使用Google的协议缓冲区(protocol buffer),但是在安装的时候遇到了一些问题。

按照说明,我需要自己用Visual Studio编译PB,但我电脑上没有安装Visual Studio。于是我在下载页面找到了一个Windows的二进制文件。

我还下载了完整的源代码包,然后把protoc-2.5.0-win32.zip\protoc.exe放到了C:\windows\system32文件夹里。

接着我去到protobuf-2.5.0.zip\python文件夹,运行了python setup.py install来安装Python绑定。

但是我遇到了这样的错误: enter image description here

然后我检查了一下目录,发现google\protobuf\compiler这个文件夹不存在。

这是什么问题呢?

有没有可能不编译就能使用它呢?

3 个回答

0

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,程序就会做出反应。这种情况下,我们通常会使用“事件监听器”。

事件监听器就像一个守门员,它一直在关注某个特定的事件,比如鼠标点击、键盘输入等。当这个事件发生时,守门员就会通知程序去执行相应的代码。

举个例子,假设你有一个按钮,用户点击它后,程序就会显示一条消息。你需要先设置一个事件监听器,让它监控这个按钮的点击事件。一旦用户点击了按钮,事件监听器就会“听到”这个动作,然后执行你预先写好的代码,显示消息。

这样,程序就能根据用户的操作做出反应,让整个应用变得更加互动和友好。

C:\Users\dev3\protobufcode\protobuf-master\python
$ python setup.py build
$ python setup.py install

C:\Users\dev3\protobufcode
$ python --version
Python 3.6.5
$ python -i build\gen\addressbook_pb2.py
>>> import addressbook_pb2
>>> Person = addressbook_pb2.Person()
>>> person = addressbook_pb2.Person()
>>> person.id = 1234
>>> person.name = "Go Fish"
>>> person.email = "gofish@example.com"
>>> phone = person.phones.add()
>>> phone.number = "111-2222"
>>> phone.type = addressbook_pb2.Person.HOME
>>> person
name: "Go Fish"
id: 1234
email: "gofish@example.com"
phones {
  number: "111-2222"
  type: HOME
}

>>>
2

在Windows上安装这个软件包之前,你需要先下载一个编译器(叫做protoc.exe),并把它放到环境执行路径里。

完成这个步骤后,你可以运行以下命令:

python setup.py build

python setup.py install

~yy

2

我之前也遇到过同样的问题。解决办法就是在之前明确地进行构建步骤。

python setup.py build
python setup.py install

这个方法对我有效。

撰写回答