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

Python对版本的对应即为苛刻,笔者第一次安装时遇到了不少坑,好比没法将proto文件转换成py文件,转换了以后文件没法使用,网上各类各样的解决办法都没有讲到重点。其实会出现各类各样的问题是因为版本没有对应——python版本、protobuf库的版本、protoc.exe的版本必须彻底一致。java

1、安装protoc.exe(版本3.6.1)python

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

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

(2)打开cmd命令,输入protoc --version能够查看版本code

 

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

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

 

(2)安装完成后,能够输入pip list查看版本号utf-8

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

 

3、将proto文件转换成pb2.py文件pycharm

 (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 import os  2 
 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 in lines: 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 in os.walk(path): 23     for file in files: 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文件(以下图)

相关文章
相关标签/搜索