---
title: 安装Python版本的proto
description: "如果训练脚本依赖protobuf的Python版本进行序列化结构的数据存储（例如TensorFlow的序列化相关接口），则需要安装Python版本的proto。"
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/tfmigr1_000121.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/tfmigr1_000121.html
indexId: 075c15a0714c6d2957224b81f9ca9cbcd1722e3715a5ae0a564914a52258970573
---
# 安装Python版本的proto

如果训练脚本依赖protobuf的Python版本进行序列化结构的数据存储（例如TensorFlow的序列化相关接口），则需要安装Python版本的proto。

1. 检查系统中是否存在“/usr/local/python3.7.5/lib/python3.7/site-packages/google/protobuf/pyext/_message.cpython-37m-<arch>-linux-gnu.so”动态库，如果没有，需要按照如下步骤安装。其中<arch>为系统架构类型。
  “/usr/local/python3.7.5/lib/python3.7/site-packages”是pip安装第三方库的路径，可以使用pip3 -V检查。 如果系统显示：/usr/local/python3.7.5/lib/python3.7/site-packages/pip，则pip安装第三方库的路径为/usr/local/python3.7.5/lib/python3.7/site-packages。

2. 执行如下命令卸载protobuf。

```
pip3 uninstall protobuf
```


3. 下载protobuf软件包。
  从https://github.com/protocolbuffers/protobuf/releases/download/v3.11.3/protobuf-python-3.11.3.tar.gz(https://github.com/protocolbuffers/protobuf/releases/download/v3.11.3/protobuf-python-3.11.3.tar.gz)路径中下载3.11.3版本protobuf-python-3.11.3.tar.gz软件包（或者其他版本，保证和当前环境上安装的TensorFlow兼容），并以root用户上传到所在Linux服务器任意目录并执行命令解压。

```
tar zxvf protobuf-python-3.11.3.tar.gz
```


4. 以root用户安装protobuf。
  进入protobuf软件包目录。
  a. 安装protobuf的依赖。
    当操作系统为Ubuntu时，安装命令如下：

```
apt-get
install autoconf automake libtool curl make g++ unzip libffi-dev -y
```


    当操作系统为CentOS/BClinux时，安装命令如下：

```
yum
install autoconf automake libtool curl make gcc-c++ unzip libffi-devel -y
```


  b. 为autogen.sh脚本添加可执行权限并执行此脚本。

```
chmod +x autogen.sh
./autogen.sh
```


  c. 配置安装路径（默认安装路径为"/usr/local"）。

```
./configure
```


    如果想指定安装路径，可参考以下命令。

```
./configure --prefix=/protobuf
```


    “/protobuf”为用户指定的安装路径。

  d. 执行protobuf安装命令。

```
make -j15        # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数，示例为15，用户可自行设置相应参数。
make install
```


  e. 刷新共享库。

```
ldconfig
```


    protobuf安装完成后，会在4.c中配置的路径下面的include目录中生成google/protobuf文件夹，存放protobuf相关头文件；在4.c中配置路径下面的bin目录中生成protoc可执行文件，用于进行*.proto文件的编译，生成protobuf的C++头文件及实现文件。

  f. 检查是否安装完成。

```
ln -s /protobuf/bin/protoc /usr/bin/protoc
protoc --version
```


    其中/protobuf为4.c中用户配置的安装路径。如果用户未配置安装路径，则直接执行protoc --version检查是否安装成功。


5. 安装protobuf的Python版本运行库。

  a. 进入protobuf软件包目录的Python子目录，编译Python版本的运行库。

```
python3 setup.py build --cpp_implementation
```


    如果不执行此命令生成二进制版本的运行库，序列化结构的处理性能会较低。

  b. 安装动态库。

```
cd .. && make install
```


    进入Python子目录，安装Python版本的运行库。

```
python3 setup.py install --cpp_implementation
```


  c. 检查是否安装成功。
    检查系统中是否存在“/usr/local/python3.7.5/lib/python3.7/site-packages/protobuf-3.11.3-py3.7-linux-aarch64.egg/google/protobuf/pyext/_message.cpython-37m-<arch>-linux-gnu.so”这个动态库。其中<arch>为系统架构类型。 “/usr/local/python3.7.5/lib/python3.7/site-packages”是pip安装第三方库的路径，可以使用pip3 -V检查。 如果系统显示：/usr/local/python3.7.5/lib/python3.7/site-packages/pip，则pip安装第三方库的路径为/usr/local/python3.7.5/lib/python3.7/site-packages。

  d. 若用户在    4.c
中指定了安装路径，则需在运行脚本中增加环境变量的设置：

```
export LD_LIBRARY_PATH=/protobuf/lib:${LD_LIBRARY_PATH}
```


    "/protobuf"为4.c中用户配置的安装路径。

  e. 建立软链接。
    当用户自行配置安装路径时，需要建立软链接，否则导入TensorFlow会报错。命令如下：

```
ln -s /protobuf/lib/libprotobuf.so.22.0.3 /usr/lib/libprotobuf.so.22
```


    其中"/protobuf"为4.c中用户配置的安装路径。
