Ubuntu系统python2.7安装tensorflow报错class DescriptorBase(......),SyntaxError: invalid syntax


一、问题出现背景:Ubuntu16.04安装TensorFlow1.13.1(版本这里无所谓)

第一次使用Ubuntu,我先装了个anaconda3,所以系统中存在了Python3.7,系统Python默认是3.7,要调用python2.7,需要在终端使用Python2。但是项目要使用底层Python2,并且要求TensorFlow1.13.1,我就跟着网上的步骤安装了TensorFlow。

当用python2安装tensorflow的时候,安装完成后,进行测试:

import tensorflow as tf

结果出现错误:
在这里插入图片描述

二、使用网上给的办法,无效

别人方法链接

  • 简单来说是因为安装时TensorFlow带的protobuf==3.18.3,需要卸载重装protobuf==3.17.3
  • 如果你的电脑里只有一个Python2(或者有Python2和Python3,但是默认Python版本为Python2),这个方法对你 有用;
  • 如果你的系统里同时有Python2和Python3,并且默认Python是Python3,那你就参考我的办法。
  • 如何知道自己的默认Python是哪个版本呢?
    直接打开终端输入python,显示出结果就是默认版本啦。例如我的就是默认是python3.7,输入python2才显示Python2.7。
    在这里插入图片描述

三、我的办法,成功解决

一句话总结:在命令里要将所有的pip换为pip2

1.查看自己TensorFlow里的Pro版本

终端输入代码:

pip2 freeze		#注意使用pip2,因为pip默认是python3.7是安装工具

在这里插入图片描述
在这里插入图片描述
如图显示我的protobuf==3.18.0,就是这里出了问题,我们要做的就是把protobuf换为3.17.0版本

2.更换protobuf==3.17.0

1. 首先卸载protobuf==3.18.0

但是直接在终端运行如下卸载代码会报错:

pip2 uninstall protobuf==3.18.0

在这里插入图片描述
在这里插入图片描述
报错的原因是权限不够,所以我们要先开启root权限,在终端运行以下代码:

su root		#然后输入你的root密码

忘记了自己的root密码,或者还没有设置root密码的,总之这一步看不明白的,参考大佬文章:
ubuntu 16.04 设置root用户初始密码

2. 终端运行以下代码进行卸载安装

pip2 uninstall protobuf==3.18.0
pip2 install protobuf==3.17.3

在这里插入图片描述

3. 验证你的TensorFlow是否能用

1. 依次在终端执行如下指令:

python2
import tensorflow as tf
a=tf.constant([1.0,2.0,3.0],shape=[3],name='a')
b=tf.constant([1.0,2.0,3.0],shape=[3],name='b')
c=a+b
sess=tf.Session(config=tf.ConfigProto(log_device_placement=True))
print sess.run(c)

2. 结果展示:

在这里插入图片描述
在这里插入图片描述

四、总结

  • 以上就是我花费一天找出来的方法,主要是系统里有两个python,pip是对应python3pip2是 对应python2,之前老采用pip去安装python2 的东西,出现了很多让我抓狂的问题。
  • 之前一直看网上说的pip对应python2pip3对应python3,自己也这么理解的,但是结果在我这里是不一致的。我觉得是因为我没有把python2.7设置为系统默认python而pip对应的应该是系统默认python版本。
  • 期间我还遇到了pip==20.0,而20版自带bug,导致pip无法使用也无法正常卸载更新,最后用源码手动安装了pip==18.1版本。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值