问题
在jupyter里跑代码,我们pip install某个模块并且显示下载成功,但是当我们去import导入时,发现还是显示No module xxx found这个报错。
(个人用Conda安装经常有问题,感觉不如pip方便,所以简单的项目喜欢用Pip安装包,除非一定要虚拟环境的,不然不喜欢用Conda)
原因
出现这种情况的原因是Anaconda所配置的库路径没有包含当前的python的库路径。
可以看到这是我jupyter的路径,都是conda的路径,现在就想把Pip的路径也包含进去。
而这是我的Pip终端路径
可以看到明显是不一样的。
如果我们的jupyter所配置的库路径没有包括pip install第三方库安装路径的话,我们在Jupyter是调用不了pip install的下载的包的。
解决方法有两种:
第一种,就是把Pip install的路径设为jupyter所配置的路径,改成第一张图里第二行的site-packages这一行的路径。
但是这种方法会导致Pip安装的包和Conda在同一个安装目录,在版本控制方面可能会有很大的问题,所以不建议,建议用第二种方法。
更改方法详见查看第三方库的安装路径并修改路径
第二种就是我题目说的,添加Jupyter的package路径。
网上我目前找到了两种方法:
这种方法治标不治本,每次我们打开jupyter的时候都要添加这几行代码。
(2)添加环境变量
这种方法我在我电脑试了也没用,下面说的是最后一种方法。
(3)更改jupyter配置文件
我们cmd打开终端,输入
jupyter --config-dir
可以看到系统返回一个路径,我们复制下来,去到 .jupyter的目录下
可以看到jupyter_notebook_config.py文件,如果没有的话就创建
在该文件中添加这段代码
import os
c = get_config()
c.NotebookApp.extra_sys_path = [os.path.join(os.environ['HOME'], 'path/to/your/python/packages')]
其中'path/to/your/python/packages'是你的package库的路径。
格式如下:
不知道自己路径的话,可以去看上面那个查看第三方库安装路径的链接。
保存文件并关闭,然后重启Jupyter,再去输入
import sys
sys.path
应该就可以看到路径多了我们所添加的这一行路径了,并且代码运行不会出现NO module。这里最好可以在代码里面调整下路径的顺序,加到最后面去,Python找路径的时候是从上往下找的,如果找到了就停止找了,具体看情况而定Pip和Conda的路径哪个在前哪个在后比较好。