代码之家  ›  专栏  ›  技术社区  ›  jsstuball

protobuf包是如何使用的?

  •  0
  • jsstuball  · 技术社区  · 5 年前

    .proto 文件以包声明开始,这有助于防止不同项目之间的命名冲突。在Python中,包通常由目录结构决定,因此在 原型机 文件对生成的代码没有影响。不过,你还是应该申报一个 避免协议缓冲区名称空间中的名称冲突 以及在非Python语言中。

    “事实上这是假的” 在文件中定义的包 原型机 文件对生成的代码没有影响 因为 ..._pb2.py 文件包含具有包字段的描述符。

    DESCRIPTOR = _descriptor.FileDescriptor(
      name='example.proto',
      package='example',
      syntax='proto3',
       ...
    )
    

    我查过了,你不能 import example 生成代码后,将其转换为常规python文件。i、 e.申报 package example; 在你的 原型机 protoc 编译它不会自动使包可以在环境中的python文件中导入(您仍然必须使用 import ..._pb2

    有人能解释一下包裹是如何申报的吗 文件在Python中都有使用,比如C#作为一种明确使用名称空间的语言的例子?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Archit Kapoor    4 年前

    引用文件本身:

    在Python中,package指令被忽略,因为Python模块是

    那么包声明到底有什么用呢? 我相信两件事:

    1. Foo package bar package baz bar.Foo baz.Foo 在需要的地方。

    2. 我认为第二个原因是 . 包指令在Python和Golang中都被忽略。但是,像C++和C语言一样,它们明确地创建命名空间,确实要考虑指定的包。所以对于 在上面的示例中,一个名为 bar baz

    尽管如此,我个人还没有发现在Python应用程序的protobuf消息中使用包说明符。

    https://developers.google.com/protocol-buffers/docs/proto