安装tensonflow:在Windows10&Anaconda环境下(彻底解决ImportError : No Moduled Name "tensorflow"/_pywrap_ten等一类问题)

版本:

V2.0,2018-10-09 18:42:52

v3.0,2018.11.23

这个帖子随着我的理解不断加深,会不断对以前描述不详实之处进行修改与更新

写作动力:

为了完成吴恩达教授的Deeplearing公开课的课后作业,需要在jupyter notebook中使用tensorflow模块。作为一个刚入坑的小白,第一次接触tf并不会配置,足足花了5天的时间才踩完所有的坑弄好,其中每个模块反反复复装了接近10次。中途查阅了截止2018.02.26全网近乎所有所有的相关帖子,没有一篇帖子完整的描述这个问题(包括同论坛的一篇名叫踩坑帖的)。为了帮助后来的人不再像我这么麻烦,耽误时间,故写下这篇帖子。

解决问题:

1.在window10中为在Anaconda自带的jupyter notebook配置tensorflow

2.彻底解决配置好后jupyter notebook报错ImportError : No Moduled Name "tensorflow的问题(其实只是路径问题,不像其他帖子说的要ipython kernelspec install-self --user重新编译内核,而且重新编译后根本没有解决问题)

3.解决“解决了No Moduled Name "tensorflow的问题”之后又跳出的ImportError: cannot import name 'weakref'问题

先说说我最终配置好的环境:

个人装的是具有挑战性的GPU版本,为了充分利用显卡的并行能力。做DL的只用CPU感觉说不过去。

安装总体版本组合是:Anaconda5.1.0(Python 3.6.4) + tensorflow_gpu_1.2.1 + cuda8.0.61 + cudnn7.1.4 for CUDA8.0,我机子中没有安装python的官方发行的版本只安装了anacona。我全部选的是目前的最新版本,但是cuda千万不要选目前最新的版本,我现在最新的是9.0,也许你看到这篇帖子的时候是10.0或更高,记住往前选一个版本,最新版本可能还不支持tf,这是踩的第一个坑。

(看完本帖后的你肯定也可以在官方python发行版甚至两者并存的环境中配置好tf)

 

下面开始正文:

1.下载安装Anaconda:

移步至清华大学镜像源https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载Anaconda,并执行傻瓜式下一步安装。(所有用户+添加Path)但现在安装好后直接打开其中自带的jupyter notebook,是无法引入tensorflow的。

2.安装CUDA与CUDNN:

百度搜索,去NVDIA官网直接下载安装CUDA和CUDNN,先安装CUDA,安装好后再解压CUDNN的压缩包,将解压后的文件对应地拷贝到CUDA的安装目录中。(若有打不开网站或下载不下载的朋友,不要惊慌,请移步另一时间段或另一台不在同一子网的电脑多试几次)

3.安装tensorflow:

本文是专门为tensorflow创建了一个虚拟env进行安装的!

新来的小白可能还对“安装tensorflow”概念懵懂,tensorflow只是一个深度学习的框架,说白了你可以理解为是一个python的第三方库,里面提供了诸如强大的Backprop,Adam,Momentum函数,最大的好处是你可以不必亲自实现反向传播。既然作为一个python库,自然是安装在python文件夹的/Lib/site-package中。

如果你按照tf中文官网的安装方式安装不了,那是正常的,你又被墙了。还是请移步至清华大学的镜像源https://mirrors.tuna.tsinghua.edu.cn/tensorflow/windows/,这里你可以选择在线安装和将wheel文件下载下来安装,两者效果是一样的,这里我只说在线安装:

开始菜单-所有程序-Anaconda中找到Anaconda Prompt打开(所有的打开方式都不需要显示地使用管理员权限打开,有的其他帖子这么说根本没鸟用),依次执行下述命令:

conda create -n tensorflow python=3.6

activate tensorflow

python.exe -m pip install --upgrade pip #更新pip

pip install --ignore-installed --upgrade D:\tensorflow_gpu-1.2.1-cp36-cp36m-win_amd64.whl #输入你的轮子文件所在路径

然后就是等待安装自动完成,完成后,测试我们是否安装成功:

直接在Prompt中输入下面这句话:

python -c "import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))"

来测试tf是否安装成功:成功只会显示一句安装路径。

如果你这里弹出一大片东西,诸如

1.ImportError: DLL load failed: 找不到指定的模块

2.Failed to load the native TensorFlow runtime

3.No module named '_pywrap_tensorflow_internal'

这类提示,解决的办法:

1.将CUDNN中文件cudnn64_7.dll的文件名改成cudnn64_5

2.还是不行说明你的tensorflow版本与你的cuda版本不匹配了,请回看我上方关于cuda版本的描述。

注意:若出现版本不匹配问题,需要重新安装CUDA和CUDNN时,卸载完毕后记得先重启电脑,之后检查环境变量是否也被彻底删除,以免引起之后不必要的麻烦。

4.配置路径:

如果上一步中你测试成功,开心地打开jupyter notebook,写下import tensorflow as tf,开心地发现失败了,错误提示ImportError : No Moduled Name "tensorflow。如果这个问题交由一个小白自己去解决,起码三天时间,还不一定解决。但你看到我的帖子恭喜你,你省下了将近3天的时间。

在python默认的第三方库安装路径中,(对于只安装了Anaconda的人来说是\Anaconda3\Lib\site-packages,安装官方发行版本也在类似的目录中)新建一个path.pth文件,在里面写上你tensorflow安装的位置(位置可以用pip show tensorflow查看)

D:\Anaconda3\envs\tensorflow\Lib\site-packages#写你自己的绝对路径,这里以安装Anaconda为例

5.配置路径2:

再次启动jupyter notebook测试import tf,如果成功恭喜你了,本贴结束。如果这时候只是错误变了,变为ImportError: cannot import name 'weakref',那么请在tensorflow的的安装位置中找到名为的tf_should_use.py文件,将第28行的from backports import weakref替换为import weakref

再次打开notebook测试,至此,大功告成!

 

主要参考帖子:(我踩坑过程中阅读的帖子远不止这些,这是其中有代表性的,其他帖子有些大同小异)

https://www.cnblogs.com/myblog1993/p/6931007.html

https://zhuanlan.zhihu.com/p/26988074

https://blog.csdn.net/qq_16568981/article/details/71750789

https://blog.csdn.net/xyh153996626/article/details/77864502

https://stackoverflow.com/questions/48593014/launching-tensorboard-error-importerror-cannot-import-name-weakref

https://blog.csdn.net/Yan_Joy/article/details/76094202

你可能感兴趣的:(DeepLearing)