Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python grpcio tools protoc.main给出了';缺少输出指令';错误_Python_Protocol Buffers_Grpc_Grpc Python - Fatal编程技术网

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

命令,因为
-
不是真实的
-
(破折号等),所以手动键入该命令修复了我的问题

由于复制和粘贴不正确的字符,我收到了此错误

我希望你能从我愚蠢的错误中吸取教训:)