pip 安装protobuf_Python3.6安装protobuf模块+将proto文件转换成pb2.py文件

本文详细介绍了如何在Python3.6环境下安装protobuf的特定版本3.6.1,包括手动和批量转换proto文件为pb2.py文件的方法,以及在转换过程中需要注意的版本匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python对版本的对应即为苛刻,笔者第一次安装时遇到了很多坑,比如无法将proto文件转换成py文件,转换了之后文件无法使用,网上各种各样的解决办法都没有讲到重点。其实会出现各种各样的问题是由于版本没有对应——python版本、protobuf库的版本、protoc.exe的版本必须完全一致。

一、安装protoc.exe(版本3.6.1)

下载地址 https://pan.baidu.com/s/12rWYAet3fhz2rUTtrrKM0w,提取码:w987

(1)protoc.exe 放在C:\Windows\System3中(为避免安装probuf期间的各种问题)

(2)打开cmd命令,输入protoc --version可以查看版本

二、安装protobuf库(特定版本3.6.1)

(1)进入python3.6的scripts目录下,输入pip install protobuf==3.6.1进行安装(安装指定版本库)

(2)安装完成后,可以输入pip list查看版本号

(3)验证是否成功:打开cmd,输入python,输入import google.protobuf,如果不报错则安装成功

三、将proto文件转换成pb2.py文件

(1)先来试一下手动生成

1)把protoc.exe放到proto文件所在目录下

2)打开proto文件,在首行添加syntax = "proto2";

双引号内填proto2还是proto3是根据开发使用的版本来定的,2和3在字段规则上会有些不一样,具体解释请各自百度

3)打开cmd,cd到proto文件所在目录,输入protoc --python_out=. xxxx.proto(如下图所示),成功后会发现目录下出现了一个pb2.py文件

(2)上面手动转换只适用于proto文件数量少的情况,但是实际上,一个项目会有上百个proto文件,这时就需要用到自动转换了。

1)在桌面上新建pro文件夹,在此目录下新建python文件夹,将protoc.exe放到pro目录下

2)将开发给你的proto文件夹复制到pro目录下

3)去pycharm里编写文件读写的代码(如下图)

作用:在每个proto文件首行添加syntax = "proto2";

1 importos2

3 path = 'C:\\Users\\Administrator\\Desktop\\pro\\proto\\' #proto文件夹所在的路径

4 files = os.listdir(path) #将path路径下的所有文件名存入列表files

5 #print(files)

6

7 def delStr(file): #删除文件中不想要的行

8 file_data = ""

9 list1 = ['syntax = "proto2";\n']10 with open(file, "r", encoding="utf-8") as f:11 lines =f.readlines()12 lines=list1+lines #每个文件第一行加上syntax = "proto2";

13

14 with open(file, "w", encoding="utf-8") as w:15 for line inlines:16 if 'option java_package' in line or 'option java_outer_classname'in line: #如果这行出现了你不想要的关键字,删除这一行

17 continue

18 w.write(line)19 f.close()20

21

22 for root,dirs,files inos.walk(path):23 for file infiles:24 #print(file)

25 protoname=os.path.join(root, file)26 print(protoname)27 if protoname.find('.proto') > -1:28 delStr(protoname)

4)文件修改好后,还需要转换成pb2.py文件,需要用批处理命令(如下图)

编写好之后,保存为.bat格式,放到pro目录下

5)验证是否成功:先运行读写文件操作的python脚本,然后运行批处理命令,结果如下图,这样就说明成功了(warning不用管)

6)最后就可以把转换好的pb2.py文件(夹)复制到你的python工程中进行使用了,由于python不支持跨文件夹的引用,所以需要在每个文件夹下新建空白的__init__.py文件(如下图)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值