protobuf是python在自带的一个软件, 用 conda install protobuf 安装就可以
用pip show protobuf 查看是否安装成功

如果: protoc --version 命令找不到指定文件参考如下链接设置:
https://www.cnblogs.com/oracleloyal/p/5485432.html

主要是在profile文件中增加如下配置
export PATH=$PATH:/root/anaconda3/bin
export PKG_CONFIG_PATH=/root/anaconda3/lib/pkgconfig

1. 配置.proto 文件, 大概格式如下:

(1)对象定义的话,都是message 开始, 这种在py文件中调用时,需要先初始化添加对象,
address_book = addressbook_pb2.AddressBook() ## 添加对象
person = address_book.people.add() ## 添加一个对象的主题

(2)格式:所有的数据都定义在一个message里面,数据的类型可以是bool,int32,float,double,string类型,也可以是枚举类型(enum),
定义数据前必须指定限制字required,optional,或repeated

2. #message 定义案例


   //specify the proto version
    syntax = "proto2";    // 注意这里用的是2, 如果是3个话,好像optional 这个明明有问题
    //the name(or empty)
    package tutorial;

    message Person {
      required string name = 1;     //后面的1,2,3 表示字段的位置
      required int32 id = 2;
      optional string email = 3;

      enum PhoneType {
        MOBILE = 0;
        HOME = 1;
        WORK = 2;
      }

      message PhoneNumber {
        required string number = 1;
        optional PhoneType type = 2 [default = HOME];
      }

      repeated PhoneNumber phones = 4;   //repeate 类似数组,里面可以存放多个PhoneNumber 可自定义类型
    }

    message AddressBook {
      repeated Person people = 1;
    }

3. 生成python 协议文件.py格式

  protoc -I=$SRC_DIR --python_out=$DST_DIR $SRC_DIR/addressbook.proto
   其中: $SRC_DIR 表示.proto存放的路径
         $DST_DIR表示生成的.py协议文件所在的路径
   如:protoc -I=./ --python_out=./ ./addressbook.proto    ## ./表示当前路径

4. 利用协议文件尽心格式转换

#序列化
#stuff_serial = stuff1.SerializeToString()
#反序列化
#stuff_unserial =stuff1.ParseFromString()

   ## 序列化数据,生成序列化文件
   import addressbook_pb2
    import sys

    address_book = addressbook_pb2.AddressBook()  ## 添加对象


### 最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~  

给大家准备的学习资料包括但不限于:  

Python 环境、pycharm编辑器/永久激活/翻译插件  

python 零基础视频教程  

Python 界面开发实战教程  

Python 爬虫实战教程  

Python 数据分析实战教程  

python 游戏开发实战教程  

Python 电子书100本  

Python 学习路线规划

![](https://img-blog.csdnimg.cn/d29631674929476f9c3b30f7ff58dff0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlaTM0Nzc5NTc5MA==,size_16,color_FFFFFF,t_70)




**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里无偿获取](https://bbs.csdn.net/topics/618317507)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐