在anaconda prompt 启动jupyter lab的卡死问题已经困扰我接近一年了,在网上查了很多解决方案都无效。无奈之下,自己彻底卸载anaconda后开始大量测试,试图解决问题。
目录
一:问题简述
二:问题表现
三:这种问题的解决办法
方法一:(第一版)清理缓存、注册表(不好用,不建议)
方法二:(第二版,建议)每次启动前修改一次工作路径(有点繁琐,但很管用,能完全避免启动卡死)
方法三:(第三版,建议)卸载nb_conda(实验推测是nb_conda引起的问题)
①:创建一个虚拟环境.
②:创建完后,配置环境。
③:修改kernel.json中的路径,设定为相应虚拟环境的路径
④:效果显示
通过anaconda prompt启动jupyter lab时,如果看到一个Activate code page:65001+CONDA_PREFIX = 路径,心会直接凉一半,因为根据以往经验,多半又得卡死了。
如果出现3次,那基本可以准备强制关机,重启电脑了。
这种卡死的表现:
①jupyter显示正在连接内核,但一直连接不上。
②电脑开始变得卡顿(就仿佛电脑停止工作了一样),此时浏览器无法加载新的网页,也无法打开任务管理器,久而久之连页面都无法关闭......
遇到这种卡死,我一直都是强制关机处理的,重新打开电脑就可以正常使用电脑了,但依然没法正常使用jupyter lab。
清理电脑缓存。这个方法时好时坏,不建议使用。
首先要找到jupyter生成的配置文件 jupyter_lab_config.py 。如果不知道在哪儿,就在 anaconda prompt 中用如下命令生成一个,并显示其地址。根据地址找到jupyter lab的配置文件。
jupyter lab --generate-config
每启动一次jupyter lab,就修改一次jupyter lab配置文件中的默认工作路径。这种方法可以完美避免卡死,但麻烦在于每启动一次jupyter lab就需要修改一次路径。比如我的:
这次启动用的path1,那么下次启动就换成path2。(我很长一段时间都是这样处理的,把配置文件的快捷方式放在桌面上,默认记事本打开,每次就在两个工作路径反复切换)。
# Configuration file for lab.
## 修改工作路径
## The directory to use for notebooks and kernels.
# Default: ''
##c.ServerApp.root_dir = path1 ## 自设工作path1
c.ServerApp.root_dir = path2 ## 自设工作path2
最近顺着报错找原因时,找原因时,怀疑是因为安装了nb_conda的原因,导致的错误。
因为没有nb_conda,就不会有下面这些东西出现。
不使用nb_conda,就没法在jupyter里面切换其他内核了,这又是我不愿意看到的。因此,为了能切换内核的同时又能解决卡死问题,我在网上找到了方法,以下是我总结的解决方案:
我将jupyter的配置相关文件单独放在一个环境里面的,(为了防止出问题,如果出问题了就直接删除这个虚拟环境)
conda create -n 环境名称 python=版本号
## 我的
conda create -n jupyter python==3.8
# 安装jupyter lab
conda install jupyterlab ##或者:pip install jupyterlab
# 安装nodejs(如果要代码补全等插件,就必须安装)
conda install nodejs
# 安装ipykernel
conda install ipykernel ##或者:pip install ipykernel
# 在conda环境中,激活jupyter(我创建的虚拟环境叫jupyter,根据自己的存放jupyter的虚拟环境修改)
conda activate jupyter
## 添加内核
## ipykernel install --name=(建议填虚拟环境的英文名) --display-name=(jupyter显示名)
ipykernel install --name=DA --display-name=数据分析 ## 我的虚拟环境之一(DA)
## 如果有多个虚拟环境,同理:
ipykernel install --name=ML --display-name=机器学习
## 添加完内核,查看一下内核信息
jupyter kernelspec list
这是我的jupyter kernelspec list后的结果:
还没有结束!!!顺着这个路径,找到新添加内核的配置信息的位置
## 比如我的两个:
da C:\Users\NaN\AppData\Roaming\jupyter\kernels\DA
ml C:\Users\NaN\AppData\Roaming\jupyter\kernels\ML
## 就复制路径
C:\Users\NaN\AppData\Roaming\jupyter\kernels\
## 去文件资源管理器打开
这就是添加的虚拟环境的配置文件所在位置,进入其中一个,可以看到kernel.json文件,用记事本打开,然后修改的内容如下:(第一个必修改,第二个根据自己喜好修改)
修改完成后,在jupyter 虚拟环境下启动jupyter lab,就可以看到自己的虚拟环境了
同理,修改其他kernel。
补充:第三步修改完,在打开jupyter后创建一个ipynb文件后,可能依然连接不上,并且会报如下错误:
这时候,你需要在当前虚拟环境安装一个库,
## 在存放jupyter lab的虚拟环境中安装
conda install pyzmq
安装完成后,上面的错误就不会再报了,并且可以启动jupyter lab,正常使用了:
修改完成后,jupyterlab启动就不会卡死了,同时也能完成nb_conda的功能(在jupyter里面切换内核)。以下是对比效果。
数据分析专用的kernel:
机器学习专用的kernel:
到这里为止,整个基础环境就算配置好了,后续根据自己需要再配置相应的包、插件,就可以正常使用了。
到写完这篇文章为止,电脑还没有启动卡死过,后续如果还卡死,我会再继续找办法解决并更新,如果未更新,就意味着最后一个方法已解决这种问题。
更新时间:2022-07-17
更新了,2022-07-18 23:40,在jupyter里关闭所有kernel后再次打开jupyter时,电脑报一下错误,然后卡死(同之前症状)
Exception in callback ()
handle: ()>
Traceback (most recent call last):
File "D:\B\anaconda\conda3\envs\jupyter\lib\asyncio\events.py", line 81, in _run
self._context.run(self._callback, *self._args)
RuntimeError: Cannot enter into task cb=[IOLoop.add_future..() at D:\B\anaconda\conda3\envs\jupyter\lib\site-packages\tornado\ioloop.py:687]> while another task cb=[IOLoop.add_future..() at D:\B\anaconda\conda3\envs\jupyter\lib\site-packages\tornado\ioloop.py:687]> is being executed.
解决方法: 如下ERROR:asyncio:Exception in callback <TaskWakeupMethWrapper object at 0x000001E5B13E7FA8>(<Future fin_峰回路转~的博客-CSDN博客jupyter notebook运行报错第一种报错:ERROR:asyncio:Exception in callback
在存放jupyter的虚拟环境下执行以下代码就可以解决了。
pip uninstall jupyter-cilent
pip install jupyter-client==6.1.12 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip uninstall pyzmq
pip install pyzmq==19.0.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
更新时间:2022-07-19 0:02