problema di compilazione in protobuf con nanopb
Sto usando la libreria nanopb
Cerco il tuo suggerimento per risolvere il problema di compilazione: sto usando protobuf 3.12, nanopb 0.4.2, puython3, gcc. Ho compilato sia il protocollo c che il python, ma ho comunque riscontrato problemi durante la costruzione.
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'
Per favore dimmi cosa mi sto perdendo. Dovrei usare solo Python2?
Inoltre quali caratteristiche di protobuf non sono consigliate per l'uso in nanopb? Nanopb supporta sia la sintassi proto2 che proto3?
Risposte
generator / proto / nanopb_pb2.py ", riga 10, in from google.protobuf importa symbol_database come _symbol_database ImportError: impossibile importare il nome" symbol_database "
Sembra che ci possa essere un conflitto di protoc
versione tra la versione e la tua python-protobuf
versione. Prova a rimuoverlo nanopb_pb2.py
, dovrebbe essere nuovamente generato automaticamente, possibilmente con maggiore fortuna.
Considerando che stai usando il pacchetto binario, puoi anche chiamare generator_bin/nanopb_generator
, che dovrebbe avere tutte le dipendenze già incluse.