本文比较啰嗦,我喜欢把一个问题的“前生后世”描述清楚(读者有耐心可以当故事看/滑稽.jpg),看解决方法直接点击目录跳转即可。
提前概括本文要讲的内容:
在装好Pytorch的虚拟环境下,为什么JupyterNotebook可以import torch,而JupyterLab不能?JupyterLab作为新一代JupyterNotebook,应该如何配置才能使用torch框架?
在之前一篇文章中我写了详细的教程,是关于如何安装Anaconda以及如何配置自己需要的虚拟环境。Anaconda给机器学习者提供了极大的方便,至少在管理框架和各种包的时候不会出现那种似有似无的玄学情况。
有关Anaconda的教程请移步: 这可能是一篇最贴心的Anaconda指北了(踩坑点)希望读者可以从这篇文章中收获满满。
我在Anaconda的帮助下,编写了不少深度学习的神经网络模型,也开始做一些数据挖掘、集成学习以及yolov5目标检测。在做稍大的项目比如目标检测、深度学习时,我会选择使用Pycharm编程,但是涉及到分块的数据分析时,我再次回到了曾经帮助我学习Python语法的Jupyter。
那么问题来了,我的从cmd中activate Pytorch_envs(这个是我安装了pytorch的虚拟环境),然后命令输入jupyter lab,于是打开了它。
然后我点击上面的Python 3图标,直接开始暴力import!
如上图,我很吃惊,我很诧异,我很慌张!我在自己的虚拟环境下用Pycharm Spyder JupyterNotebook都没有问题,为什么JupyterLab会出错?
我查阅了不少资料,有小伙伴说了,“这JupyterNotebook和JupyterLab本是一家人,不用存在差别呀!”,“这Jupyter就是只能调base环境!要用torch就得在base装torch!”。
首先,我们来证明第一句话是错的:同样的环境,同样的路径,同样的方式,启动JupyterNotebook。
我们运行刚刚import torch失败的程序,光速打脸,这不是成功调用了吗?
事实证明,我的torch只安装在了Pytorch_envs环境下,base环境保持默认没变动过,所以小伙伴的第二句话也是错的~
现在开始正式说明如何在JupyterLab中使用torch
在虚拟环境和Pytorch都装好的前提下,导入Pytorch环境!
activate <虚拟环境名>
# 安装 IPython kernel for Jupyter
conda install ipykernel -y
# 导入 pytorch 虚拟环境到 ipykernel
python -m ipykernel install --user --name <虚拟环境名> --display-name "Python PyTorch"
成功执行命令后,让我们再次启动JupyterLab看看效果。
上图,发现在Python 3 后面多出来了两项,也就是python -m ipykernel install --user --name <虚拟环境名> --display-name "Python PyTorch"
这条命令中最后双引号中的名称!
点击进入编辑模式,看看最终能否达到我们期望的效果。
完美收工⭐
对于这个问题的解决方案,我的理解就是简单一句话:
把带Pytorch的虚拟环境植入Jupyter内核中!搞定!