关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)

在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就需要修改一次路径。比如我的:

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第1张图片

这次启动用的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的原因,导致的错误。

因为没有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后的结果:

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第2张图片

③:修改kernel.json中的路径,设定为相应虚拟环境的路径    

        还没有结束!!!顺着这个路径,找到新添加内核的配置信息的位置

## 比如我的两个:
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\
## 去文件资源管理器打开

         可以看到有两个:关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第3张图片

 这就是添加的虚拟环境的配置文件所在位置,进入其中一个,可以看到kernel.json文件,用记事本打开,然后修改的内容如下:(第一个必修改,第二个根据自己喜好修改)

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第4张图片

        修改完成后,在jupyter 虚拟环境下启动jupyter lab,就可以看到自己的虚拟环境了

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第5张图片

        同理,修改其他kernel。 

补充:第三步修改完,在打开jupyter后创建一个ipynb文件后,可能依然连接不上,并且会报如下错误:

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第6张图片

        这时候,你需要在当前虚拟环境安装一个库,

## 在存放jupyter lab的虚拟环境中安装
conda install pyzmq

         安装完成后,上面的错误就不会再报了,并且可以启动jupyter lab,正常使用了​​​​:关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第7张图片

④:效果显示

        修改完成后,jupyterlab启动就不会卡死了,同时也能完成nb_conda的功能(在jupyter里面切换内核)。以下是对比效果。

        数据分析专用的kernel

关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第8张图片

        机器学习专用的kernel:

 关于anaconda prompt 启动jupyter lab卡死问题(电脑卡死,需要强制关机)_第9张图片

        到这里为止,整个基础环境就算配置好了,后续根据自己需要再配置相应的包、插件,就可以正常使用了。        

         到写完这篇文章为止,电脑还没有启动卡死过,后续如果还卡死,我会再继续找办法解决并更新,如果未更新,就意味着最后一个方法已解决这种问题。

更新时间: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 (https://blog.csdn.net/weixin_40981660/article/details/119897759        简单来说就是:pyzmq版本问题。

        在存放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

你可能感兴趣的:(python,python,jupyter)