问题描述
我正在使用nanopb库
我寻求您的建议来解决构建问题-我正在使用protobuf 3.12,nanopb 0.4.2,puython3,gcc。我同时编译了c和python协议,但是在构建时仍然遇到问题。
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语法?
解决方法
generator / proto / nanopb_pb2.py”,第10行,来自google.protobuf,将symbol_database导入为_symbol_database ImportError:无法导入名称“ symbol_database”
似乎protoc
版本与您的python-protobuf
版本之间存在版本冲突。尝试删除nanopb_pb2.py
,它应该会再次自动生成,如果运气更好。
考虑到您使用的是二进制软件包,您还可以调用generator_bin/nanopb_generator
,它应该已经包含所有依赖项。