grpcio-tools protoc.main 给出 'missing output directives' 错误
grpcio-tools protoc.main gives 'missing output directives' error
我想使用 protoc.main(...)
以便在运行时生成 python gRPC 文件,如下所示。
from grpc_tools import protoc
args = "--proto_path=. --python_out=grpc --grpc_python_out=grpc alpha.proto"
result = protoc.main(c)
以上代码给出 'missing output directives' 错误,结果代码为 1
.
但是,下面的解决方法可以将 alpha.proto
作为命令行参数。这意味着 alpha.proto
文件没问题。
import subprocess
result = subprocess.call("python -m grpc_tools.protoc " + args, shell=True)
可能的原因是 (1) protoc.main
对每个字符进行了 编码 ,如下面的代码,或 (2) protoc.main
错误地在内部解析了参数路径.
def main(command_arguments):
"""Run the protocol buffer compiler with the given command-line arguments.
Args:
command_arguments: a list of strings representing command line arguments to
`protoc`.
"""
command_arguments = [argument.encode() for argument in command_arguments]
return _protoc_compiler.run_main(command_arguments)
如何正确使用 protoc.main
?
下面的代码将在 .proto
个文件所在的 proto
目录中生成 python 个文件。
proto_files = ["proto/file1.proto", "proto/file2.proto"]
from grpc_tools import protoc
for file in proto_files:
grpc_tools.protoc.main([
'grpc_tools.protoc',
'--proto_path=.',
'--python_out=.',
'--grpc_python_out=.',
file
])
我从答案中得到了提示;
如果您正在学习 golang protobufs 的中级教程,请勿复制和粘贴:
protoc --go_out=. *.proto
命令,因为 --
不是真正的 -
(破折号等),所以手动输入命令解决了我的问题。
由于复制和粘贴不正确的字符,我收到此错误
希望你能从我的愚蠢错误中吸取教训:)
我想使用 protoc.main(...)
以便在运行时生成 python gRPC 文件,如下所示。
from grpc_tools import protoc
args = "--proto_path=. --python_out=grpc --grpc_python_out=grpc alpha.proto"
result = protoc.main(c)
以上代码给出 'missing output directives' 错误,结果代码为 1
.
但是,下面的解决方法可以将 alpha.proto
作为命令行参数。这意味着 alpha.proto
文件没问题。
import subprocess
result = subprocess.call("python -m grpc_tools.protoc " + args, shell=True)
可能的原因是 (1) protoc.main
对每个字符进行了 编码 ,如下面的代码,或 (2) protoc.main
错误地在内部解析了参数路径.
def main(command_arguments):
"""Run the protocol buffer compiler with the given command-line arguments.
Args:
command_arguments: a list of strings representing command line arguments to
`protoc`.
"""
command_arguments = [argument.encode() for argument in command_arguments]
return _protoc_compiler.run_main(command_arguments)
如何正确使用 protoc.main
?
下面的代码将在 .proto
个文件所在的 proto
目录中生成 python 个文件。
proto_files = ["proto/file1.proto", "proto/file2.proto"]
from grpc_tools import protoc
for file in proto_files:
grpc_tools.protoc.main([
'grpc_tools.protoc',
'--proto_path=.',
'--python_out=.',
'--grpc_python_out=.',
file
])
我从答案中得到了提示;
如果您正在学习 golang protobufs 的中级教程,请勿复制和粘贴:
protoc --go_out=. *.proto
命令,因为 --
不是真正的 -
(破折号等),所以手动输入命令解决了我的问题。
由于复制和粘贴不正确的字符,我收到此错误
希望你能从我的愚蠢错误中吸取教训:)