如果训练脚本依赖protobuf的python版本进行序列化结构的数据存储(例如tensorflow的序列化相关接口),则需要安装python版本的proto。
“/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。
pip3 uninstall protobuf
从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)。
当操作系统为EulerOS时,安装命令如下:
yum install autoconf automake libtool curl make gcc-c++ unzip libffi-devel -y
yum install autoconf automake libtool curl make gcc-c++ unzip libffi-devel -y
./autogen.sh
./configure
如果想指定安装路径,可以通过
./configure --prefix=/protobuf
“/protobuf”为用户指定的安装路径。
make -j15 # 通过grep -w processor /proc/cpuinfo|wc -l查看cpu数,示例为15,用户可自行设置相应参数。
make install
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检查是否安装成功。
python3 setup.py build --cpp_implementation
这里需要编译二进制版本的运行库,如果使用python3 setup.py build命令无法生成二进制版本的运行库,在序列化结构的处理时性能会非常慢。
进入python子目录,安装python版本的运行库。
python3 setup.py install --cpp_implementation
“/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。
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中用户配置的安装路径。