protobuf: .proto 文件不在源目录下

protobuf: .proto file not under source directory

我是 protobuf 的新手。按照官方教程 https://developers.google.com/protocol-buffers/docs/gotutorial,我下载了最新版本并尝试 运行 示例 examples/addressbook.proto

里面addressbook.proto,有一行 import "google/protobuf/timestamp.proto";

因此需要提供一个源目录(-I=)以便导入它。

我的问题是,在下载的版本中,我在 examples 下有 addressbook.proto,而需要的 google/protobuf/timestamp.protosrc

当我做

protoc examples/addressbook.proto --python_out=. -I=src

我收到一个错误

examples/addressbook.proto: File does not reside within any path specified using --proto_path (or -I)

我尝试使用 --proto_path 并得到了同样的错误。

当我手动将addresbook.proto移动到src下时问题就解决了,这样需要的包和.proto都在同一个目录下(由-I=src指定) .

但是,不知道有没有办法解决.proto文件和其他要导入的包在不同目录下的问题

你需要:

protoc examples/addressbook.proto --python_out=. -I=src -I=examples

当 protoc 在系统范围内安装时,它通常在默认包含路径中包含 timestamp.proto,并且不必指定 -I。但是直接从源文件夹构建时它不会自动知道路径。