Python 在cmd中import模块成功,但是在jupyter notebook中No module xxx found

  由于需要用到python中的某个库,因此打开命令行窗口cmd,然后使用pip安装。安装成功后,在cmd中输入python调出python环境,import该模块并使用,可以正常使用。但是打开juypter notebook,import该模块,却显示No module xxx found。出现这种情况的原因是juypter notebook和spyder等都是安装Anaconda时安装的,它们依赖的是Anaconda所配置的库路径,而Anaconda所配置的库路径没有包含当前的python的库路径。import sys并且输出sys.path,便可以看到库路径,如下图所示,可以发现没有所安装的python的\Lib\site-packages(注:安装的外部模块都会安装到该文件夹中),因此import时不会到该路径下寻找模块,因此导致import失败。

  ①搜索相关解决方法,我尝试了一种方法是直接在sys.path这个列表中加入(append)我的python路径和python库路径,分别是:E:\Python\Python36和E:\Python\Python36\Lib\site-packages(注意:这个是我安装的python的路径,你的以你安装python的路径为准)。使用该方法后,再次输出sys.path,可以看到这两条路径被加入,而且import之前不能工作的模块,此时也可以正常使用了。但是这种解决方案没有永久性,当退出之后重新打开该文件运行时,则又会import失败,输出sys.path,发现之前加入的两条路径也不存在了。

  ②再次搜寻解决方法,另一种方法是在环境变量中添加PYTHONPATH变量,然后将上述的python路径和python库路径(E:\Python\Python36和E:\Python\Python36\Lib\site-packages)作为变量值,如下图所示。

(环境变量添加:右键"此(我的)电脑"->点击"属性"->点击左侧“高级系统设置"->点击右下角"环境变量")

  进行以上操作后,在jupyter notebook随便打开或者新建文件,import之前不能工作的模块,都可以正常使用了。输出显示sys.path可以看到,两条路径已经被加入了。而且该方法具有永久性。

环境变量后话:

  之前我对环境变量没有太多理解,后来在多次接触之后对它有了一些更深的认识,这也使得在遇到windows的某些环境依赖问题时可以更快地解决。大多数软件安装时都会将启动软件的.exe所在的bin文件夹路径添加到环境变量中,从而在启动软件时系统能从环境变量中找到该软件的.exe进行启动。

  在我前面安装python时出现了一个问题,就是虽然安装好了python,但是在cmd中输入python却显示python不是可用的命令,即无法启动python。于是根据以往的经验,我查看了环境变量,没有找到python.exe的路径,于是我把该路径添加到环境变量中。再到cmd中输入python,此时就可以正常调出python环境了。之后我又想通过pip安装某些模块时,在cmd中输入pip install xxx,显示pip不是可用的命令。其实道理类似,也是由于pip.exe的路径没有添加到环境变量中。pip.exe位于所安装的python文件夹下的Scripts中,你可以打开看看是否有pip.exe在里面,若没有,则即使添加了路径到环境变量中也无法正常工作的。将Scripts的路径添加到环境变量中后,在cmd中pip也便可以正常运行了。

  通常来说,安装python的时候会自动将对应的这两个路径添加到环境变量中的,而如果你和我一样不幸或者说安装时的一些选择没选好导致出现以上问题,那么通过添加环境变量可以很好地解决问题。

:) PS:这是我写的最快的一篇博客。

 

posted @ 2018-11-01 21:28  Jisongxie  阅读(21577)  评论(1编辑  收藏  举报