【问题标题】:compilation issue in protobuf with nanopbnanopb 在 protobuf 中的编译问题
【发布时间】:2020-08-24 08:06:05
【问题描述】:

我正在使用 nanopb 库

我寻求您的建议来解决构建问题 - 我正在使用 protobuf 3.12,nanopb 0.4.2, puython3,gcc 。我编译了 c 和 python 的 protoc,但在构建时仍然遇到问题。

make 
protoc -osimple.pb simple.proto   - step done 
nanopb/examples/simple $ python ../../generator/nanopb_generator.py simple.pb -> following error
$ python3 ../../generator/nanopb_generator.py simple.pb Traceback (most recent call last): File "../../generator/nanopb_generator.py", line 50, in from .proto import nanopb_pb2 SystemError: Parent module '' not loaded, cannot perform relative import

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "../../generator/nanopb_generator.py", line 71, in import proto.nanopb_pb2 as nanopb_pb2 File "/home/vagrant/nanopb-0.4.2-linux-x86/generator/proto/nanopb_pb2.py", line 10, in from google.protobuf import symbol_database as _symbol_database ImportError: cannot import name 'symbol_database'

请告诉我我缺少什么。我应该只使用 Python2 吗?
另外不建议在 nanopb 中使用 protobuf 的哪些功能? nanopb 是否同时支持 proto2 和 proto3 语法?

【问题讨论】:

    标签: protocol-buffers nanopb


    【解决方案1】:

    generator/proto/nanopb_pb2.py",第 10 行,in from google.protobuf import symbol_database as _symbol_database ImportError: cannot import name 'symbol_database'

    protoc 版本和您的python-protobuf 版本之间似乎存在版本冲突。尝试删除nanopb_pb2.py,如果运气好的话,它应该会再次自动生成。

    考虑到你使用的是二进制包,你也可以调用generator_bin/nanopb_generator,它应该已经包含了所有的依赖项。

    【讨论】:

    • 它通过删除 nanopb_pb2.py 起作用!谢谢。我在问题列表中看到 nanopb 0.4.2 默认使用 python3。我还看到支持 proto3。知道 nanopb 中要避免哪些 proto3 功能吗?
    • @Dhiman 我不知道有什么理由避免使用任何特定功能。某些功能(例如Any 消息类型和深度嵌套的消息)会增加复杂性,但这适用于所有 protobuf 库。
    • 感谢您的帮助。也许我还缺少一些东西。在 Linux 中,make 正在构建 pb.c 和 pb.h 文件。但是,当我运行 python3 ../../generator/nanopb_generator.py simple.pb 或 ../../generator-bin/nanopb_generator simple.pb 时,它会出错。需要在 make 中工作的额外文件夹中检查 nanopb.mk..
    猜你喜欢
    • 2019-12-13
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多