1. 程式人生 > >TensorFlow環境下安裝jupyter notebook後,cmd打開出現cannot import name 'ensure_dir_exists'

TensorFlow環境下安裝jupyter notebook後,cmd打開出現cannot import name 'ensure_dir_exists'

最近按照TensorFlow官網給的在windows下利用Anaconda安裝tensorflow的方法,遇到不少問題,安裝過程具體如下:

(1)以管理員身份執行Anaconda Prompt

(2)輸入以下命令建立tensorflow環境

conda create -n tensorflow pip python=3.5

以這種建立環境的方式安裝tensorflow可以在Anaconda2下進行,不然Anaconda2下無法安裝tensorflow,具體原因是Anaconda用的Python 2.7,而TensorFlow支援的是 Python 3.5.x 或 3.6.x,所有直接按照以下命令安裝會報錯(如下圖):

pip install --ignore-installed --upgrade tensorflow-gpu 

報錯的內容是找不到合適的TensorFlow版本,即也說明TensorFlow並不支援Python 2.7,這會讓使用Caffe的使用者很頭疼,因為Caffe只支援Python2.7,如果要使用TensorFlow就無法用上述直接的方式安裝(Anaconda3可以直接這樣安裝,且這樣直接安裝的方式可以在jupyter notebook和spyder呼叫tensorflow不會出錯,因為在同一個環境下)。

(3)啟用環境

activate tensorflow

(4)安裝僅支援 CPU 的 TensorFlow 版本,請輸入以下命令

pip install --ignore-installed --upgrade tensorflow 

要安裝 GPU 版本的 TensorFlow,請輸入以下命令(僅支援CPU和GPU版本只能安裝一個):

pip install --ignore-installed --upgrade tensorflow-gpu 

按上述建立環境的方法安裝TensorFlow會出現原環境下的jupyter notebook和spyder呼叫tensorflow出現ImportError: No module named tensorflow,如下圖:

原因也很簡單,tensorflow的環境和原環境(root)不是同一個環境,如下圖:

但是無法使用jupyter notebook和spyder的話,會很難受,畢竟不可能天天在那黑框框下程式設計,而且每次都得輸入以下語句啟用tensorflow環境才能使用TensorFlow:

activate tensorflow

解決方法也很簡單,直接在tensorflow環境下安裝新的jupyter notebook和spyder。

(1)安裝jupyter notebook,在終端依此輸入以下命令

activate tensorflow
conda install ipython
conda install jupyter

安裝完後,在終端輸入以下命令開啟jupyter notebook:

jupyter notebook

但很不幸,有可能會發生以下錯誤(cannot import name 'ensure_dir_exists'):

Traceback (most recent call last):
  File "D:\Users\z\Anaconda3\Scripts\jupyter-Notebook-script.py", line 6, in <module>
    from notebook.notebookapp import main
  File "D:\Users\z\Anaconda3\lib\site-packages\notebook\__init__.py", line 25, in <module>
    from .nbextensions import install_nbextension
  File "D:\Users\z\Anaconda3\lib\site-packages\notebook\nbextensions.py", line 27, in <module>
    from jupyter_core.utils import ensure_dir_exists

ImportError: cannot import name 'ensure_dir_exists'

網上百度到的解決方法都是輸入以下語句來解決:

conda update jupyter_core jupyter_client

但實際結果是並不能解決問題,原因是jupyter_core版本太高了,需要降低版本,具體解決方法如下:

按照上圖中的步驟找到jupyter_core和nbconvert,在第4步中點選jupyter_core前的√,切換版本,如下圖選擇一個比原先低的版本(我選了4.1.0版本),如下圖:

選擇完後,不要忘記點選下圖中的Apply(在介面的右下角那):

nbconvert的版本也降低一下(不清楚是不是和這個有關係,因為我是先降低了這個的版本,但沒有試是不是隻降低它的版本就能解決上述問題,然後就直接降低了jupyter_core的版本,完事後測試了一下,發現問題已經解決。所以只是建議降低,如果降低完jupyter_core的版本就解決了問題,那這個就不需要切換版本了)。

注:nbconvert的版本我也降低到了4.1.0。

(2)安裝spyder

直接在Anaconda Navigator中安裝即可,即和上面一樣,只是在第2步選擇Not installed(注意是在tensorflow環境下),然後搜尋spyder即可,然後勾上spyder,點選右下角的應用進行安裝,如下圖:

安裝完後,會在如下圖中出現標有括號(tensorflow)版的jupyter notebook和spyder:

但是直接在上圖中單擊Jupyter Notebook(tensorflow)或Spyder(tensorflow)是打不開的,需要在終端按以下方法開啟jupyter notebook或spyder:

(1)開啟jupyter notebook

activate tensorflow
jupyter notebook

(2)開啟spyder

activate tensorflow
spyder

 

盡情享受吧!