【问题标题】:What are the command line arguments passed to grpc_tools.protoc传递给 grpc_tools.protoc 的命令行参数是什么
【发布时间】:2020-01-14 11:45:53
【问题描述】:

尽管每个 python grpc 快速入门都使用 grpc_tools.protoc 来生成实现 proto 文件的 python 类,the closest thing to documentation that I can find 只是说

给定 protobuf 包含目录 $INCLUDE、输出目录 $OUTPUT 和 proto 文件 $PROTO_FILES,调用如下:

$ python -m grpc.tools.protoc -I$INCLUDE --python_out=$OUTPUT --grpc_python_out=$OUTPUT $PROTO_FILES

这不是很有帮助。我注意到有很多限制。例如,使用 $OUTPUT.. 只会静默失败。

在哪里可以找到有关此工具的文档?

【问题讨论】:

    标签: python grpc


    【解决方案1】:

    我以为你在问 Python 插件。你试过-h吗?

    $ python -m grpc.tools.protoc -h
    Usage: /usr/local/google/home/lidiz/.local/lib/python2.7/site-packages/grpc_tools/protoc.py [OPTION] PROTO_FILES
    Parse PROTO_FILES and generate output based on the options given:
      -IPATH, --proto_path=PATH   Specify the directory in which to search for
                                  imports.  May be specified multiple times;
                                  directories will be searched in order.  If not
                                  given, the current working directory is used.
      --version                   Show version info and exit.
      -h, --help                  Show this text and exit.
      --encode=MESSAGE_TYPE       Read a text-format message of the given type
                                  from standard input and write it in binary
                                  to standard output.  The message type must
                                  be defined in PROTO_FILES or their imports.
      --decode=MESSAGE_TYPE       Read a binary message of the given type from
                                  standard input and write it in text format
                                  to standard output.  The message type must
                                  be defined in PROTO_FILES or their imports.
      --decode_raw                Read an arbitrary protocol message from
                                  standard input and write the raw tag/value
                                  pairs in text format to standard output.  No
                                  PROTO_FILES should be given when using this
                                  flag.
      --descriptor_set_in=FILES   Specifies a delimited list of FILES
                                  each containing a FileDescriptorSet (a
                                  protocol buffer defined in descriptor.proto).
                                  The FileDescriptor for each of the PROTO_FILES
                                  provided will be loaded from these
                                  FileDescriptorSets. If a FileDescriptor
                                  appears multiple times, the first occurrence
                                  will be used.
      -oFILE,                     Writes a FileDescriptorSet (a protocol buffer,
        --descriptor_set_out=FILE defined in descriptor.proto) containing all of
                                  the input files to FILE.
      --include_imports           When using --descriptor_set_out, also include
                                  all dependencies of the input files in the
                                  set, so that the set is self-contained.
      --include_source_info       When using --descriptor_set_out, do not strip
                                  SourceCodeInfo from the FileDescriptorProto.
                                  This results in vastly larger descriptors that
                                  include information about the original
                                  location of each decl in the source file as
                                  well as surrounding comments.
      --dependency_out=FILE       Write a dependency output file in the format
                                  expected by make. This writes the transitive
                                  set of input file paths to FILE
      --error_format=FORMAT       Set the format in which to print errors.
                                  FORMAT may be 'gcc' (the default) or 'msvs'
                                  (Microsoft Visual Studio format).
      --print_free_field_numbers  Print the free field numbers of the messages
                                  defined in the given proto files. Groups share
                                  the same field number space with the parent
                                  message. Extension ranges are counted as
                                  occupied fields numbers.
    
      --plugin=EXECUTABLE         Specifies a plugin executable to use.
                                  Normally, protoc searches the PATH for
                                  plugins, but you may specify additional
                                  executables not in the path using this flag.
                                  Additionally, EXECUTABLE may be of the form
                                  NAME=PATH, in which case the given plugin name
                                  is mapped to the given executable even if
                                  the executable's own name differs.
      --grpc_python_out=OUT_DIR   Generate Python source file.
      --python_out=OUT_DIR        Generate Python source file.
      @<filename>                 Read options and filenames from file. If a
                                  relative file path is specified, the file
                                  will be searched in the working directory.
                                  The --proto_path option will not affect how
                                  this argument file is searched. Content of
                                  the file will be expanded in the position of
                                  @<filename> as in the argument list. Note
                                  that shell expansion is not applied to the
                                  content of the file (i.e., you cannot use
                                  quotes, wildcards, escapes, commands, etc.).
                                  Each line corresponds to a single argument,
                                  even if it contains spaces.
    

    【讨论】:

    【解决方案2】:

    对于那些寻求简单快速示例的人来说,这对我有用:

    python3 -m grpc_tools.protoc --proto_path=/home/estathop/tf --python_out=/home/estathop/tf --grpc_python_out=/home/estathop/tweetf0rm ASD.proto
    

    我使用python 3,将绝对proto_path 定义到存在.proto 文件的文件夹中,我还包含在python_out 中以将此单行执行的结果保存在与绝对相同的文件夹中路径将是ASD_pb2.py。此外,grpc_python_out 还想要一个保存ASD_pb2_grpc.py 的绝对路径最后,写了ASD.proto,这是我要包含的.proto 文件,可以在命令的当前活动目录中找到行窗口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2015-06-09
      • 2017-10-22
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多