关于TensorFlow安装后import调用失败的情况,很多刚入行的同学经常踩坑。网络上求助,大多是碎片化的方案,无法有效解决自己本地问题。针对这个情况,笔者和大家分享一个轻松简单的排查思路,方便同学们抽丝剥茧,找到适合自己的解决方法。
问题背景还原:
通过打开anaconda prompt,输入命令行pip install tensorflow。完成安装后,打开jupyter notebook,输入import tensorflow时,出现报错,找不到该模块:
# ImportError: No module named tensorflow
出现这种情况,不要着急。让我们把上面的几句话,拆解为步骤:
第1步:打开anaconda prompt
第2步:输入pip install进行安装
第3步:完成安装
第4步:打开jupyter notebook
最后,输入import tensorflow进行调用。
俗话说,只有过程正确,结果才能正确。上述4个步骤,每一步都有坑,你都晓得吗?
第1步:打开anaconda prompt的注意细节
这一步有以下几个细节(按常见性排序):
1. 打开anaconda prompt时,要右键管理员身份运行,否则会出现未知错误
2. anaconda软件确保是64位安装包,如果是32位的,要卸载重新安装64anaconda
3. 如果习惯通过cmd打开命令窗口,要记得先输入activate到指定环境,再输入pip install prompt安装命令。不要在cmd下直接执行该命令,虽然有人这样操作也可以成功安装,但你的电脑环境和别人不一样,一定按照标准操作来。
第2步:输入pip install进行安装时的细节
这一步常出现的情况有:
1. 下载速度慢,经常超时中断;有时误以为下载完成,其实没有安装成功
2. 安装时出现wrapt报错,或出现twist版本过低的提示
关于第1点,我们通过镜像方式解决,代码如下:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow==2.0.0
GPU用户,需改为tensorflow-gpu==2.0.0
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow==2.0.0
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu==2.0.0
在命令行中输入代码时,一定要仔细,比如https:后面是双斜杠// ,upgrade前面是--,等
阿里镜像源也不错,推荐使用:
阿里云:http://mirrors.aliyun.com/pypi/simple/
关于第2点,主要还是本机的tensorflow版本问题
出现wrapt报错时,可以通过下列代码来解决
# pip install wrapt --upgrade --ignore-installed
出现twist版本过低时,可以网络搜索twist,下载更高版本,安装后再进行pip install tensorflow安装
但有些电脑可能升级twist也会报错。笔者建议可以尝试更低的tensorflow版本。如果tensorflow2.0版本安装时出现报错,就尝试安装tensorflow1.5或者1.1.5版本即可解决。
pip指定tensorflow版本安装代码如下:
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade tensorflow-gpu==1.1.5
第3步,完成安装后,一定要再次检查是否真的安装成功
这一步非常重要,很多新手忽略了。通过conda list tensorflow来检查是否已存在tensorflow库
# (base) C:\Windows\system32>conda list tensorflow
# packages in environment at D:\Anaconda3:
# Name Version Build Channel
tensorflow 1.15.0 <pip>
tensorflow-estimator 1.15.1 <pip>
当列表中出现tensorflow,就说明成功安装了。如果你的列表中只有tensorflow-estimator,而没有tensorflow这个文件,那说明未安装成功,要回到本文的第1步,检查自己到底哪个环节疏漏了。
第4步:打开jupyter notebook,执行import调用
如果前3步你都正确执行了,那么最容易被新手忽略的一步来了,很多新手出现问题,都是栽在这一步了!要认真听了
在第3步的代码中,笔者将tensorflow安装在了base环境,很多伙伴喜欢通过anaconda创建虚拟环境,然后在虚拟环境安装tensorflow库。比如你创建了一个虚拟环境,命名为:B 。
然后如下操作:
# activate B //激活虚拟环境B
# jupyter notebook //启动jupyter
系统启动默认浏览器,进入jupyter web开发界面,新建.ipynb,输入:
# import tensorflow as tf
# sess = tf.Session()
# a = tf.constant(10)
# b= tf.constant(12)
# sess.run(a+b)
运行结果为22,就代表你已经完全安装好Tensorflow了;如果提示:ImportError: No module named tensorflow,那又是什么原因呢?
首先你要打开anaconda图形管理页面,在【HOME】中切换到虚拟环境B,检查下其jupyter notebook是否已安装。
如果按钮为“Launch”,代表已安装;如果按钮为“Install”,代表B环境下的jupyter还未安装,当你在命令行中如下输入时:
# (base) C:\Windows\system32>activate B
# (B) C:\Windows\system32>jupyter notebook
(B) C:\Windows\system32,表示你当前已经切换到虚拟环境B中进行操作,但其实anaconda默认启动浏览器后,进入的是base环境下jupyter,因为虚拟环境B中jupyter并没有被安装。这也就解释了为什么明明安装了tensorflow,却import不到。
原因就是:你将tensorflow安装在了虚拟环境B,而你正在使用base环境下jupyter编程。
解决方法就是:在第4步中我们一定要注意,提前在anaconda图形管理器中,将虚拟环境下的jupyter notebook安装完成,然后再执行如下代码,就可以顺利启动虚拟环境B的jupyter,进行网页端编程了:
# activate B //激活虚拟环境B
# jupyter notebook //启动jupyter
最后再补充一点小贴士,学习tensorflow初学者,一般也会用到keras。keras镜像安装代码如下:
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ --upgrade keras==2.3.1
这里要特别注意的是,keras是基于tensorflow代码高度封装的库,keras版本和tensorflow版本需要对应。不可以随便安装版本,具体对应规则,网络搜索“keras和tensorflow版本对应”即可。
会者不难,难者不会。TensorFlow的安装过程,很多新人可能搞上2-3天还是不成功。只要注意以上4个步骤,见招拆招,每一步都正确,那么结果就会是正确的。
本文到此完结,希望对你有帮助。