关于linux中python能够import而jupyter notebook不能import问题

浏览: 2512

当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/

推荐 0
本文由 走马兰台 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册