我是protobuf的新手。在官方教程https://developers.google.com/protocol-buffers/docs/gotutorial之后,我下载了最新版本,并尝试运行示例examples/addressbook.proto
在addressbook.proto
内,有一条线
import "google/protobuf/timestamp.proto";
,
所以需要提供一个源目录(-I=
)以便导入它。
我的问题是,在下载的版本中,addressbook.proto
位于examples
下,google/protobuf/timestamp.proto
位于src
当我这样做时
protoc examples/addressbook.proto --python_out=. -I=src
我收到错误
examples / addressbook.proto:文件不在任何路径中 使用--proto_path(或-I)指定
我尝试使用--proto_path
并遇到同样的错误。
当我手动移动addresbook.proto
下的src
时,问题就解决了,因此所需的包和.proto都在同一目录下(由-I=src
指定)。
但是,我想知道当 .proto 文件和其他待导入软件包位于不同目录下时是否存在解决方案。
答案 0 :(得分:1)
你需要:
protoc examples/addressbook.proto --python_out=. -I=src -I=examples
在系统范围内安装protoc时,默认包含路径中的timestamp.proto
通常为-I
,并且不必指定{{1}}。但是,当直接从源文件夹构建时,它不会自动知道路径。