Этот протокольный путь неверен:
import "github.com/golang/protobuf/ptypes/timestamp/timestamp.proto"; // WRONG path
Это правильный путь импорта независимо от того, какой язык вы используете - Go или Python и т. Д .:
import "google/protobuf/timestamp.proto"; // correct path for any language (go, python etc)
ЭтоФайл timestamp.proto
находится с помощью инструмента protoc-gen-go
(при создании кода Go) с использованием его значения по умолчанию INCLUDE_PATH
.
Например, на моем Mac, например, по умолчанию INCLUDE_PATH
:
/usr/local/Cellar/protobuf/3.7.1/include
с полным путем прото-файла:
/usr/local/Cellar/protobuf/3.7.1/include/google/protobuf/timestamp.proto
Вы можете увидеть другие стандартные определения прото, которые поставляются с вашей установкой gRPC, такие как duration.proto
:
$ pwd # my default gRPC include path
/usr/local/Cellar/protobuf/3.7.1/include
$ find . -name "*.proto"
./google/protobuf/timestamp.proto
./google/protobuf/field_mask.proto
./google/protobuf/api.proto
./google/protobuf/duration.proto
./google/protobuf/struct.proto
./google/protobuf/wrappers.proto
./google/protobuf/source_context.proto
./google/protobuf/any.proto
./google/protobuf/type.proto
./google/protobuf/empty.proto
./google/protobuf/compiler/plugin.proto
./google/protobuf/descriptor.proto
При условии, что вы установили инструментарий gRPC (и его заголовки) в правильном месте, согласно документам установки , тогда приведенная выше иерархия каталогов должна совпадать для любой сборки ОС.
PS this вопрос объясняет, как установить явный INCLUDE_PATH
при использовании прото-компилятора.