Как использовать сгенерированные файлы python protobuf? - PullRequest
0 голосов
/ 27 октября 2018

При выполнении учебника по https://developers.google.com/protocol-buffers/docs/pythontutorial, я столкнулся с самой первой проблемой.Я просто хочу инициализировать очень простое перечисление.Это мое сообщение (UserRole.proto):

syntax = "proto3";

package benji;

enum UserRole {
    superUser = 0;
    admin = 1;
    recruiter = 2;
    regular = 3;
}

Вот как я хочу использовать его в MyFile.py:

import UserRole_pb2

myUserRole = UserRole_pb2().UserRole()

Дополнительная информация:

enter image description here

Это сгенерированный файл (UserRole_pb2.py):

# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: UserRole.proto

import sys
_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
from google.protobuf.internal import enum_type_wrapper
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from google.protobuf import reflection as _reflection
from google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()




DESCRIPTOR = _descriptor.FileDescriptor(
  name='UserRole.proto',
  package='benji',
  syntax='proto3',
  serialized_options=None,
  serialized_pb=_b('\n\x0eUserRole.proto\x12\x05\x62\x65nji*@\n\x08UserRole\x12\r\n\tsuperUser\x10\x00\x12\t\n\x05\x61\x64min\x10\x01\x12\r\n\trecruiter\x10\x02\x12\x0b\n\x07regular\x10\x03\x62\x06proto3')
)

_USERROLE = _descriptor.EnumDescriptor(
  name='UserRole',
  full_name='benji.UserRole',
  filename=None,
  file=DESCRIPTOR,
  values=[
    _descriptor.EnumValueDescriptor(
      name='superUser', index=0, number=0,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='admin', index=1, number=1,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='recruiter', index=2, number=2,
      serialized_options=None,
      type=None),
    _descriptor.EnumValueDescriptor(
      name='regular', index=3, number=3,
      serialized_options=None,
      type=None),
  ],
  containing_type=None,
  serialized_options=None,
  serialized_start=25,
  serialized_end=89,
)
_sym_db.RegisterEnumDescriptor(_USERROLE)

UserRole = enum_type_wrapper.EnumTypeWrapper(_USERROLE)
superUser = 0
admin = 1
recruiter = 2
regular = 3


DESCRIPTOR.enum_types_by_name['UserRole'] = _USERROLE
_sym_db.RegisterFileDescriptor(DESCRIPTOR)


# @@protoc_insertion_point(module_scope)

Что ж, происходит сбой в строке 4 в сгенерированном файле.Эта строка:

from google.protobuf.internal import enum_type_wrapper

Выдает «Любое исключение».Как я могу использовать этот простой сгенерированный файл в Python?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...