0

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どうすれば正しく使えますか?

4

2 に答える 2

0

golang protobufs の中間チュートリアルに従っている場合は、コピーして貼り付けないでください。

protoc --go_out=. *.proto

コマンド、--実際-の 's(ダッシュなど)ではないため、コマンドを手動で入力すると問題が解決しました。

不適切な文字をコピーして貼り付けたため、このエラーが発生しました

私のばかげた間違いから学んでいただければ幸いです:)

于 2020-03-26T21:25:37.707 に答える