Kompilierungsproblem in Protobuf mit Nanopb

Aug 24 2020

Ich benutze eine Nanopb-Bibliothek

Ich suche Ihren Vorschlag, um das Build-Problem zu beheben - ich verwende Protobuf 3.12, Nanopb 0.4.2, Puython3, gcc. Ich habe sowohl c als auch python protoc kompiliert, hatte aber beim Erstellen immer noch Probleme.

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'

Bitte sag mir, was mir fehlt. Soll ich nur Python2 verwenden?
Auch welche Funktionen von Protobuf werden für die Verwendung in Nanopb nicht empfohlen? Unterstützt Nanopb sowohl die Proto2- als auch die Proto3-Syntax?

Antworten

jpa Aug 24 2020 at 10:33

generator / proto / nanopb_pb2.py ", Zeile 10, aus google.protobuf import symbol_database als _symbol_database ImportError: Name 'symbol_database' kann nicht importiert werden

Es scheint, dass möglicherweise ein Versionskonflikt zwischen der protocVersion und Ihrer python-protobufVersion besteht. Versuchen Sie zu entfernen nanopb_pb2.py, es sollte möglicherweise mit etwas mehr Glück wieder autogeneriert werden.

Wenn Sie das Binärpaket verwenden, können Sie auch aufrufen generator_bin/nanopb_generator, wobei alle Abhängigkeiten bereits enthalten sein sollten.