解决TensorFlow因为protoc版本过低导致执行protoc object_detection/protos/*proto --python_out=.出错的问题

首先查看本机的protoc的版本

protoc --version

我的机器在安装之前输出的是2.6.1版本的protoc,那是我通过如下的命令安装的:

sudo apt install protobuf-compiler

我的机器上出现因protoc版本过低导致如下的错误输出:

(tf) liuqiang@liuqiang:~/models/research$ protoc object_detection/protos/*proto --python_out=.
object_detection/protos/ssd.proto:87:3: Expected "required", "optional", or "repeated".
object_detection/protos/ssd.proto:87:12: Expected field name.
object_detection/protos/model.proto: Import "object_detection/protos/ssd.proto" was not found or had errors.
object_detection/protos/model.proto:12:5: "Ssd" is not defined.

接着去官方的下载地址下载最新版本的protoc
https://github.com/protocolbuffers/protobuf/releases
我下载的是当前最新版本的二进制解压安装包protoc-3.6.1-linux-x86_64.zip

sudo apt-get install unzip
unzip protoc-3.6.1-linux-x86_64.zip -d protoc-3.6.1-linux-x86_64 #解压,或者鼠标右键解压即可
sudo mv protoc-3.6.1-linux-x86_64/ /opt
cd /opt/protoc-3.6.1-linux-x86_64/bin
chmod +x protoc #这一步很必要,否则执行的还是2.6.1版本的
export PATH=/opt/protoc-3.6.1-linux-x86_64/bin:$PATH
source ~/.bashrc

安装完成后就可以去测试了:

liuqiang@liuqiang:~$ source activate tf
(tf) liuqiang@liuqiang:~$ cd ~/models/research
(tf) liuqiang@liuqiang:~/models/research$ protoc object_detection/protos/*proto --python_out=.
(tf) liuqiang@liuqiang:~/models/research$ protoc --version
libprotoc 3.6.1
(tf) liuqiang@liuqiang:~/models/research$ 

根据输出的结果可以看出,新版本的protoc安装完成了。
解压安装的一个好处就是用户可以随时切换protoc的版本,特别是当计算机的环境比较复杂的时候,要兼容其他的项目,可能需要多个版本的protoc共存.当我们需要低一点的版本时,只需要在.bashrc中注释掉如下的一行即可:

export PATH=/opt/protoc-3.6.1-linux-x86_64/bin:$PATH

然后执行source ~/.bashrc命令即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值