我尝试使用以下命令编译proto文件:
protoc -I=. --python_out=. ./message.proto --proto_path=.
但我得到了这个错误:
--proto_path passed empty directory name. (Use "." for current directory.)
怎么办?
a64a0gku1#
您应该删除-I=.中的=,并删除--proto_path=.标志
-I=.
=
--proto_path=.
owfi6suc2#
指挥部为我工作。
注意-I == --proto_path,因此使用具有相同值的两者是多余的
-I
--proto_path
protoc的一个“问题”是protobuf文件必须用proto_path封装。因此,在您的示例中,当前目录必须包含一个有效的message.proto文件,因为./message.proto是一个有效的引用,并且因为--proto_path包含当前目录。
protoc
proto_path
message.proto
./message.proto
qltillow3#
在我的例子中,混合短和长标志-I=和--python_out=是问题所在。
-I=
--python_out=
$ protoc -I=. --python_out=. ./message.proto --proto_path passed empty directory name. (Use "." for current directory.)
解决方案:
$ protoc --proto_path=. --python_out=. ./message.proto
在您的情况下,删除-I=.将解决问题。
$ protoc --python_out=. ./message.proto --proto_path=.
3条答案
按热度按时间a64a0gku1#
您应该删除
-I=.
中的=
,并删除--proto_path=.
标志owfi6suc2#
指挥部为我工作。
注意
-I
==--proto_path
,因此使用具有相同值的两者是多余的protoc
的一个“问题”是protobuf文件必须用proto_path
封装。因此,在您的示例中,当前目录必须包含一个有效的
message.proto
文件,因为./message.proto
是一个有效的引用,并且因为--proto_path
包含当前目录。qltillow3#
在我的例子中,混合短和长标志
-I=
和--python_out=
是问题所在。解决方案:
在您的情况下,删除
-I=.
将解决问题。