【问题标题】:Is there a way compile protocol buffers into pure python code?有没有办法将协议缓冲区编译成纯 python 代码?
【发布时间】:2016-11-04 04:18:04
【问题描述】:

我正在研究使用协议缓冲区与我们拥有的一些自定义设备进行通信。问题是这些设备运行嵌入式 python 解释器,我们无法在它们上安装额外的库。有没有办法在不需要 protobuf 库的情况下将 .proto 文件编译成 python?

【问题讨论】:

  • 你可以直接导入文件吧?所以,下载这个github.com/google/protobuf/tree/master/python 然后就像 import mox 一样
  • 看起来里面有超过 150 万的代码。我们的整个应用程序小于 500K。我想知道解析器需要多少才能工作。
  • 您是否需要 Protobuf 与其他已经使用它的部分进行通信?您可以使用其他一些解决方案吗,例如:ASN.1、ZeroMQ?
  • 我需要一个紧凑的二进制协议来通过网络与嵌入式设备进行通信。该设备运行 python,但资源非常有限,并且不允许安装外部库。我会研究 zeromq 和 ASN.1,谢谢。
  • 这只是吐槽,疯狂的谈话,但你不能像 protobuff 的 python 实现的反序列化位一样撕开,重新实现一个 protobuff 格式规范的最低限度硬编码,该规范在加载时初始化。然后,您可以使用单个静态 protobuff 定义/网络配置与您的设备进行至少一种通信。但是,如果您要从事所有这些工作,为什么不只是泡菜呢?这会容易得多

标签: python protocol-buffers


【解决方案1】:

试试protlib,它只有 51.4 KB,你可以删除一些处理你不需要的类型的代码。

【讨论】:

  • 看起来 lib 是纯 python 的,所以我们可以将它嵌入到我们的代码库中。谢谢,我会将此标记为答案。
【解决方案2】:

另一种可能性是使用Better Protobuf for Python,与 protolib 不同的是,它目前受支持。它支持大多数用例,自 2019 年以来一直在积极开发中。它还提供了一个非常友好的 API 来与生成的 Protobuf 文件进行交互。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    相关资源
    最近更新 更多