跳转到主要内容

gRPC的Protobuf代码生成器

项目描述

gRPC Python工具包。

支持的Python版本

Python >= 3.6

安装

gRPC Python工具包适用于Linux、Mac OS X和Windows。

从PyPI安装

如果您是本地安装...

$ pip install grpcio-tools

否则在系统范围内(在Ubuntu上)...

$ sudo pip install grpcio-tools

如果您使用Windows,确保在安装Python时安装了pip.exe组件(如果没有,请返回并安装!)然后调用

$ pip.exe install grpcio-tools

Windows用户可能需要在管理员模式下运行的命令行中调用pip.exe

注意。在Windows和Mac OS X上,必须有一个最新的pip版本,才能从PyPI检索正确的轮子。请确保升级到最新版本!

您可能还需要安装Cython,以便在gRPC Python的系统覆盖范围不包括您的系统时,通过源分发进行安装。

从源安装

从源构建需要您安装Python头文件(通常是一个名为python-dev的包)和Cython。它还需要一个GCC类似的编译器才能顺利运行;您可能在不使用GCC类似工具的情况下使其工作,但您可能会遇到一些麻烦。

$ export REPO_ROOT=grpc  # REPO_ROOT can be any directory of your choice
$ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $REPO_ROOT
$ cd $REPO_ROOT
$ git submodule update --init

$ cd tools/distrib/python/grpcio_tools
$ python ../make_grpcio_tools.py

# For the next command do `sudo pip install` if you get permission-denied errors
$ GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install .

您目前在Windows上无法从源代码安装Python。在MSYS2上可能会有所帮助(请遵循Linux说明),但目前官方并不支持。

故障排除

帮助,我……

  • ……在从源代码安装或从源代码分发安装时,在某些平台上看到编译器错误

    如果您看到

    /tmp/pip-build-U8pSsr/cython/Cython/Plex/Scanners.c:4:20: fatal error: Python.h: No such file or directory
    #include "Python.h"
                    ^
    compilation terminated.

    您可以通过安装 python-dev 软件包来修复它。例如

    sudo apt-get install python-dev

    如果您看到类似的内容

    third_party/protobuf/src/google/protobuf/stubs/mathlimits.h:173:31: note: in expansion of macro 'SIGNED_INT_MAX'
    static const Type kPosMax = SIGNED_INT_MAX(Type); \\
                               ^

    并且您的工具链是GCC(在撰写本文时,至少是GCC 6.0),这可能是GCC在指定 -fwrapv 标志时在常量表达式中崩溃的错误。您应该考虑使用 CFLAGS=-fno-wrapv 设置环境或使用clang(CC=clang)。

用法

给定protobuf包含目录 $INCLUDE、输出目录 $OUTPUT 和proto文件 $PROTO_FILES,可以这样调用

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

要将它用作基于setuptools的项目构建步骤,您可以在您的 setup.py 中使用提供的命令类

setuptools.setup(
  # ...
  cmdclass={
    'build_proto_modules': grpc_tools.command.BuildPackageProtos,
  }
  # ...
)

命令的调用将遍历项目树,并将每个 .proto 文件转换为同一目录下的 _pb2.py 文件。

请注意,这种方法要求在调用设置脚本之前在机器上安装 grpcio-tools(即,如果尚未安装,则没有任何 setup_requiresinstall_requires 的组合将提供对 grpc_tools.command.BuildPackageProtos 的访问)。一种解决方法可以在我们的 grpcio-health-checking 中找到

class BuildPackageProtos(setuptools.Command):
  """Command to generate project *_pb2.py modules from proto files."""
  # ...
  def run(self):
    from grpc_tools import command
    command.build_package_protos(self.distribution.package_dir[''])

现在在 setup_requires 中包含 grpcio-tools 将提供所需的设置命令。

有关命令类的更多信息,请参阅 setuptools 文档。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分布

grpcio_tools-1.66.2.tar.gz (5.2 MB 查看哈希值)

上传时间

构建分布

grpcio_tools-1.66.2-cp313-cp313-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.13 Windows x86-64

grpcio_tools-1.66.2-cp313-cp313-win32.whl (940.0 kB 查看哈希值)

上传时间 CPython 3.13 Windows x86

grpcio_tools-1.66.2-cp313-cp313-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传时间 CPython 3.13 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp313-cp313-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传时间 CPython 3.13 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.13 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp313-cp313-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.13 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp313-cp313-macosx_10_13_universal2.whl (5.5 MB 查看哈希值)

上传于 CPython 3.13 macOS 10.13+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp313-cp313-linux_armv7l.whl (2.3 MB 查看哈希值)

上传于 CPython 3.13

grpcio_tools-1.66.2-cp312-cp312-win_amd64.whl (1.1 MB 查看哈希值)

上传于 CPython 3.12 Windows x86-64

grpcio_tools-1.66.2-cp312-cp312-win32.whl (940.5 kB 查看哈希值)

上传于 CPython 3.12 Windows x86

grpcio_tools-1.66.2-cp312-cp312-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp312-cp312-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传于 CPython 3.12 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp312-cp312-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp312-cp312-macosx_10_9_universal2.whl (5.5 MB 查看哈希值)

上传时间: CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp312-cp312-linux_armv7l.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.12

grpcio_tools-1.66.2-cp311-cp311-win_amd64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.11 Windows x86-64

grpcio_tools-1.66.2-cp311-cp311-win32.whl (940.9 kB 查看哈希值)

上传时间: CPython 3.11 Windows x86

grpcio_tools-1.66.2-cp311-cp311-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp311-cp311-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp311-cp311-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp311-cp311-macosx_10_9_universal2.whl (5.5 MB 查看哈希值)

上传时间: CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp311-cp311-linux_armv7l.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.11

grpcio_tools-1.66.2-cp310-cp310-win_amd64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.10 Windows x86-64

grpcio_tools-1.66.2-cp310-cp310-win32.whl (941.1 kB 查看哈希值)

上传时间: CPython 3.10 Windows x86

grpcio_tools-1.66.2-cp310-cp310-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp310-cp310-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp310-cp310-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp310-cp310-macosx_12_0_universal2.whl (5.5 MB 查看哈希值)

上传时间: CPython 3.10 macOS 12.0+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp310-cp310-linux_armv7l.whl (2.3 MB 查看哈希值)

上传时间: CPython 3.10

grpcio_tools-1.66.2-cp39-cp39-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

grpcio_tools-1.66.2-cp39-cp39-win32.whl (941.2 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86

grpcio_tools-1.66.2-cp39-cp39-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp39-cp39-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传时间 CPython 3.9 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp39-cp39-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp39-cp39-macosx_10_9_universal2.whl (5.5 MB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp39-cp39-linux_armv7l.whl (2.3 MB 查看哈希值)

上传时间 CPython 3.9

grpcio_tools-1.66.2-cp38-cp38-win_amd64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

grpcio_tools-1.66.2-cp38-cp38-win32.whl (941.1 kB 查看哈希值)

上传于 CPython 3.8 Windows x86

grpcio_tools-1.66.2-cp38-cp38-musllinux_1_1_x86_64.whl (2.9 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ x86-64

grpcio_tools-1.66.2-cp38-cp38-musllinux_1_1_i686.whl (3.2 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.1+ i686

grpcio_tools-1.66.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.4 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

grpcio_tools-1.66.2-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (2.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686

grpcio_tools-1.66.2-cp38-cp38-manylinux_2_17_aarch64.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

grpcio_tools-1.66.2-cp38-cp38-macosx_10_9_universal2.whl (5.5 MB 查看哈希值)

上传于 CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

grpcio_tools-1.66.2-cp38-cp38-linux_armv7l.whl (2.3 MB 查看哈希值)

上传于 CPython 3.8

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面