Как правильно импортировать один файл .proto в другой? - PullRequest
2 голосов
/ 08 января 2020

Я пытаюсь импортировать сообщение, определенное в одном файле .proto (ndarray.proto), в другой (image.proto). Моя структура папок:

proto/
|
|-- image.proto
|
|-- numproto/
|      |
|      |-- protobuf
|              |
|              |-- ndarray_pb2.py
|              |-- ndarray.proto

и внутри image.proto У меня есть:

syntax = "proto3";
package Image;
import "numproto/protobuf/ndarray.proto";

message image {
    int32 width = 1;
    int32 height = 2;
    numproto.protobuf.NDArray image_data = 3;
}

Я ожидаю, что теперь я могу назначить NDArray для image_data, но когда я попробую в скрипте Python:

import image_pb2
from numproto import ndarray_to_proto, proto_to_ndarray

image = image_pb2.image()
a = np.hstack((np.ones(10), np.zeros(10)))
data = ndarray_to_proto(a)
image.image_data = data

Я получаю сообщение об ошибке:

TypeError: Couldn't build proto file into descriptor pool!
Invalid proto descriptor for file "image.proto":
  numproto/protobuf/ndarray.proto: Import "numproto/protobuf/ndarray.proto" has not been loaded.
  Image.image.image_data: "numproto.protobuf.NDArray" seems to be defined in "ndarray.proto", which is not imported by "image.proto".  To use it here, please add the necessary import.

Неправильно ли я импортирую файл ndarray.proto в image.proto?

...