1. 程式人生 > >安裝tensonflow:在Windows10&Anaconda環境下(徹底解決ImportError : No Moduled Name "tensorflow"/_pywrap_ten等一類問題)

安裝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測試,至此,大功告成!

主要參考帖子:(我踩坑過程中閱讀的帖子遠不止這些,這是其中有代表性的,其他帖子有些大同小異)