当linux系统中jupyter notebook和python的sys.path不同时,有的模块不能import,需要对应检查下两个的路径
python3的shell界面
$python3
>>> import sys
>>> sys.path
['', '/cnn/pyenv/.pyenv/versions/3.5.1/lib/python35.zip', '/cnn/pyenv/.pyenv/versions/3.5.1/lib/python3.5', '/cnn/pyenv/.pyenv/versions/3.5.1/lib/python3.5/plat-linux', '/cnn/pyenv/.pyenv/versions/3.5.1/lib/python3.5/lib-dynload', '/cnn/pyenv/.pyenv/versions/env3web/lib/python3.5/site-packages']
>>>
jupyter notebook的界面
$jupyter notebook #在浏览器打开连接端口
In [1]: import sys
sys.path
Out[1]:
['',
'/usr/lib/python35.zip',
'/usr/lib/python3.5',
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload',
'/home/jordan/.local/lib/python3.5/site-packages',
'/usr/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages',
'/usr/lib/python3/dist-packages',
'/usr/local/lib/python3.5/dist-packages/IPython/extensions',
'/home/jordan/.ipython']
可以看到jupyter缺少python3下的安装包路径:/cnn/pyenv/.pyenv/versions/env3web/lib/python3.5/site-packages
解决方法:
方法一、在jupyter notebook添加路径
In [2]:import sys
sys.path.append('/cnn/pyenv/.pyenv/versions/3.5.1/envs/env3web/lib/python3.5/site-packages')
但是这种方法只能在当前界面使用,关掉jupyter notebook就不能再使用
方法二、修改配置文件
1.生成配置文件
$ ipython profile create
$ ipython locate #ipython路径
2.修改配置文件
cd /home/jordan/.ipython/profile_default
vi ipython_config.py
添加语句:c.InteractiveShellApp.exec_lines = ['import sys; sys.path.append("/cnn/pyenv/.pyenv/versions/env3web/lib/python3.5/site-packages")' ]
这时候再打开jupyter notebook,sys.path有刚才添加的路径就OK了
参考资料: https://www.lucypark.kr/blog/2013/02/10/when-python-imports-and-ipython-does-not/