Python grpcio tools protoc.main给出了';缺少输出指令';错误
我想使用Python grpcio tools protoc.main给出了';缺少输出指令';错误,python,protocol-buffers,grpc,grpc-python,Python,Protocol Buffers,Grpc,Grpc Python,我想使用protoc.main(…)在运行时生成python gRPC文件,如下所示 从grpc_工具导入协议 args=“--proto_path=。--python_out=grpc--grpc_python_out=grpc alpha.proto” 结果=protoc.main(c) 上述代码给出了“缺少输出指令”的错误,结果代码为1 然而,下面的解决方法是将alpha.proto作为命令行args工作。这意味着alpha.proto文件没有问题 导入子流程 result=subpro
protoc.main(…)
在运行时生成python gRPC文件,如下所示
从grpc_工具导入协议
args=“--proto_path=。--python_out=grpc--grpc_python_out=grpc alpha.proto”
结果=protoc.main(c)
上述代码给出了“缺少输出指令”的错误,结果代码为1
然而,下面的解决方法是将alpha.proto
作为命令行args工作。这意味着alpha.proto
文件没有问题
导入子流程
result=subprocess.call(“python-mgrpc_tools.protoc”+args,shell=True)
可能的原因是(1)protoc.main
对每个字符编码如下代码,或(2)protoc.main
在内部错误地解析参数路径
def main(命令参数):
“”“使用给定的命令行参数运行协议缓冲区编译器。”。
Args:
command_arguments:表示要执行的命令行参数的字符串列表
`protoc`。
"""
命令参数=[argument.encode()表示命令参数中的参数]
返回_protoc_编译器。运行_main(命令参数)
如何正确使用
protoc.main
?下面的代码将在proto
目录下生成python文件,proto文件位于该目录下
proto_files=[“proto/file1.proto”,“proto/file2.proto”]
从grpc_工具导入协议
对于proto_文件中的文件:
grpc_tools.protoc.main([
“grpc_tools.protoc”,
“--proto_path=”,
“--python_out=”,
“--grpc_python_out=”,
文件
])
我从答案中得到了一个暗示 如果您遵循golang protobufs的中级教程,请勿复制并粘贴以下内容:
protoc--go_out=.*。proto
命令,因为-
不是真实的-
(破折号等),所以手动键入该命令修复了我的问题
由于复制和粘贴不正确的字符,我收到了此错误
我希望你能从我愚蠢的错误中吸取教训:)