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

尽情享受吧!

猜你喜欢

转载自blog.csdn.net/qq_21368481/article/details/81982098