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)
上記のコードは、結果コードで「出力ディレクティブがありません」というエラーを返します1
。
ただし、alpha.proto
コマンドライン引数として配置する以下の回避策は機能します。これは、alpha.proto
ファイルが正常であることを意味します。
import subprocess
result = subprocess.call("python -m grpc_tools.protoc " + args, shell=True)
考えられる原因は、(1)以下のコードのように各文字にエンコードするか、(2)protoc.main
引数パス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
どうすれば正しく使えますか?