解决python grpcio.protoc生成的pb文件里面没有类和方法定义的问题

1 篇文章 0 订阅

解决办法

回退 grpcio-tools 版本到 1.43.0 及更早版本

pip install grpcio-tools==1.43.0

过程与说明

今天在学习pythongrpc_tools.protoc 编译 protobuf 文件时,突然惊奇的发现执行命令后生成的 pb 文件中并没有方法和类,搞的我都开始怀疑人生了。

以下是复现过程

protobuf文件

syntax = "proto3";

message HelloRequest {
  string name = 1; // name 表示名称
}

编译命令

 python -m grpc_tools.protoc --python_out=. --grpc_python_out=. -I. *.proto

正常执行完了就应该有方法的定义的,结果愣是没有
没有生成方法定义
最后经过一大圈baidu+google,终于找到了说明,原来是新版本的 grpc_tools 不直接生成定义了,而是运行中动态生成,所以还是可以正常运行的。

附上原始说明:https://stackoverflow.com/questions/71960226/protocol-buffers-in-python-no-classes-generated

可以正常运行

虽然能正常运行,但是这样非常不方便,使用 Pycharm 不就是为了它完美的语法提示嘛,现在不生成方法了,那就没有语法提示了,工作效率直线下降。为了解决这个问题,只能将 grpcio-tools 版本回退。

实测 grpcio-tools 最后一个能生成方法和类的定义的版本是 1.43.0 ,从 1.44 开始就没有定义内容了,开始动态生成。

  • 13
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 在Python中下载framework_pb2文件,你需要先确定你使用的是哪个框架。framework_pb2文件通常是Protocol Buffers(简称protobuf)生成文件,该文件定义了数据结构和序列化/反序列化方法。 如果你要下载的是TensorFlow框架的framework_pb2文件,首先确保你已经安装了TensorFlow。然后按照以下步骤操作: 1. 打开终端或命令提示符,进入你的Python环境。 2. 使用以下命令安装TensorFlow: ```shell pip install tensorflow ``` 4. 确保安装完成后,启动Python解释器。 5. 导入`framework_pb2`模块: ```python from tensorflow.core.framework import framework_pb2 ``` 如果你要下载的是其他框架的framework_pb2文件,如gRPCprotobuf文件,可以参考以下步骤: 1. 打开终端或命令提示符,进入你的Python环境。 2. 使用以下命令安装grpcio-tools: ```shell pip install grpcio-tools ``` 3. 在你的Python项目目录中创建一个名为`proto`的文件夹。 4. 将你的.proto文件复制到`proto`文件夹中。 5. 使用以下命令生成framework_pb2.py文件: ```shell python -m grpc_tools.protoc -I proto --python_out=proto --grpc_python_out=proto proto/your_proto_file.proto ``` 这将根据你的.proto文件生成对应的framework_pb2.py文件。 无论你下载哪个框架的framework_pb2文件,确保你按照上述步骤操作,并根据你的具体情况进行调整。 ### 回答2: 在Python中下载`framework_pb2`可以通过以下步骤完成: 首先,确保你已经安装了Python,并且具有良好的互联网连接。 接下来,打开终端或命令提示符,使用以下命令安装`protobuf`库(如果你还没有安装它的话): ``` pip install protobuf ``` 这将在你的Python环境中安装`protobuf`库。 然后,你需要到包含`framework_pb2`的protobuf文件(通常是一个`.proto`文件),然后将其下载到你的项目中。 你可以通过以下两种方式之一来获取这个文件: 1. 自己编写`.proto`文件:根据你的需求,创建一个名为`framework_pb2.proto`的文本文件,并根据protobuf的语法编写其中的内容。这个文件会描述一种数据结构,包括消息型、字段和其他相关信息。 2. 下载`.proto`文件:如果你遇到了一个已经存在的`.proto`文件,你可以直接下载它。通常,GitHub仓库是一个常见的来源,你可以在那里到很多`.proto`文件到你想要的文件,并将它下载到你的项目文件夹中。 下载完成后,通过命令行进入到该文件所在的目录,并使用以下命令将`.proto`文件转换为Python文件: ``` protoc -I=. --python_out=. framework_pb2.proto ``` 这个命令将会为你的`.proto`文件生成一个名为`framework_pb2.py`的Python文件,其中包含了对应的Python方法。 最后,你就可以在你自己的Python代码中使用`framework_pb2`了。确保将其导入到你的项目中,并根据需要使用其中的和函数。 希望这对你有帮助! ### 回答3: 在Python中下载framework_pb2,需要进行以下步骤: 1. 打开终端或命令提示符,进入Python的安装目录。 2. 使用pip工具进行安装,pip是Python的包管理器,用于添加、删除和管理Python包。 3. 输入以下命令并按下回车键,等待安装完成: ``` pip install framework_pb2 ``` 4. 如果安装成功,终端会显示安装的版本号和其他相关信息。 如果使用Anaconda环境,操作步骤与上述似,只需将pip命令替换为conda命令。 需要注意的是,framework_pb2是一个自定义protobuf消息定义文件,而非标准的Python包。在下载之前,你需要明确所在的protobuf项目、仓库或源码地址,并根据该项目的下载方式进行操作。以上步骤仅适用于标准的Python包或通过pip安装的第三方库。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值