安装Python版本的proto
如果训练脚本依赖protobuf的Python版本进行序列化结构的数据存储(例如TensorFlow的序列化相关接口),则需要安装Python版本的proto。
- 检查系统中是否存在“/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。
- 执行如下命令卸载protobuf。
pip3 uninstall protobuf
- 下载protobuf软件包。
- 以root用户安装protobuf。进入protobuf软件包目录。
- 安装protobuf的依赖。
当操作系统为CentOS/BClinux时,安装命令如下:
yum install autoconf automake libtool curl make gcc-c++ unzip libffi-devel -y
- 为autogen.sh脚本添加可执行权限并执行此脚本。
chmod +x autogen.sh ./autogen.sh
- 配置安装路径(默认安装路径为"/usr/local")。
./configure
如果想指定安装路径,可参考以下命令。
./configure --prefix=/protobuf
“/protobuf”为用户指定的安装路径。
- 执行protobuf安装命令。
make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。 make install
- 刷新共享库。
ldconfig
protobuf安装完成后,会在4.c中配置的路径下面的include目录中生成google/protobuf文件夹,存放protobuf相关头文件;在4.c中配置路径下面的bin目录中生成protoc可执行文件,用于进行*.proto文件的编译,生成protobuf的C++头文件及实现文件。
- 检查是否安装完成。
ln -s /protobuf/bin/protoc /usr/bin/protoc protoc --version
其中/protobuf为4.c中用户配置的安装路径。如果用户未配置安装路径,则直接执行protoc --version检查是否安装成功。
- 安装protobuf的依赖。
- 安装protobuf的python版本运行库。
- 进入protobuf软件包目录的python子目录,编译python版本的运行库。
python3 setup.py build --cpp_implementation
这里需要编译二进制版本的运行库,如果使用python3 setup.py build命令无法生成二进制版本的运行库,在序列化结构的处理时性能会非常慢。
- 安装动态库。
cd .. && make install
进入python子目录,安装python版本的运行库。
python3 setup.py install --cpp_implementation
- 检查是否安装成功。检查系统中是否存在“/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。
- 若用户在4.c中指定了安装路径,则需在运行脚本中增加环境变量的设置:
export LD_LIBRARY_PATH=/protobuf/lib:${LD_LIBRARY_PATH}
"/protobuf"为4.c中用户配置的安装路径。
- 建立软链接。
当用户自行配置安装路径时,需要建立软链接,否则导入tensorflow会报错。命令如下:
ln -s /protobuf/lib/libprotobuf.so.22.0.3 /usr/lib/libprotobuf.so.22
其中"/protobuf"为4.c中用户配置的安装路径。
- 进入protobuf软件包目录的python子目录,编译python版本的运行库。