Anaconda 更新后 Jupyter Notebook 内核死机

Jupyter Notebook dead Kernel after Anaconda update

我遇到了以下问题。更新 Anaconda 后,因为我在将 skimage.io 导入 Jupyter Notebook 中的项目时出错,出现了更大的错误 - Dead Kernel。现在我无法开始一个项目,因为 Jupyter 给出了以下错误:

Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
    http://localhost:8888/? 
token=aaf85a5e18489792c87cce65d7a53a0263cd5c08cc7248b 6
[I 00:55:13.451 NotebookApp] Accepting one-time-token-authenticated 
connection from ::1
[I 00:55:31.607 NotebookApp] Kernel started: 608d2190-59e6-4888-b09a- 
e616f67bd5b4
Traceback (most recent call last):
ERROR:tornado.general:Uncaught exception in ZMQStream callback
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\lib\site- 
packages\zmq\eventloop\zmqstream.py", line 432, in _run_callback
callback(*args, **kwargs)
File "C:\Program Files\Anaconda3\lib\site- 
packages\tornado\stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 233, in dispatch_shell
self.pre_handler_hook()
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 248, in pre_handler_hook
self.saved_sigint_handler = signal(SIGINT, default_int_handler)
File "C:\Program Files\Anaconda3\lib\signal.py", line 47, in signal
handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
ValueError: signal only works in main thread  File "C:\Program 
Files\Anaconda3\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)

File "C:\Program Files\Anaconda3\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel_launcher.py", 
line 16, in <module>
app.launch_new_instance()
File "C:\Program Files\Anaconda3\lib\site- 
packages\traitlets\config\application.py", line 658, in launch_instance
app.start()
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", 
line 477, in start
ioloop.IOLoop.instance().start()
File "C:\Program Files\Anaconda3\lib\site- 
packages\tornado\platform\asyncio.py", line 112, in start
self.asyncio_loop.run_forever()
ERROR:tornado.general:Uncaught exception in zmqstream callback
Traceback (most recent call last):
File "C:\Program Files\Anaconda3\lib\site- 
packages\zmq\eventloop\zmqstream.py", line 450, in _handle_events
self._handle_recv()
File "C:\Program Files\Anaconda3\lib\site- 
packages\zmq\eventloop\zmqstream.py", line 480, in _handle_recv
self._run_callback(callback, msg)
File "C:\Program Files\Anaconda3\lib\site- 
packages\zmq\eventloop\zmqstream.py", line 432, in _run_callback
callback(*args, **kwargs)
File "C:\Program Files\Anaconda3\lib\site- 
packages\tornado\stack_context.py", line 276, in null_wrapper
return fn(*args, **kwargs)
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 283, in dispatcher
return self.dispatch_shell(stream, msg)
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 233, in dispatch_shell
self.pre_handler_hook()
File "C:\Program Files\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", 
line 248, in pre_handler_hook
self.saved_sigint_handler = signal(SIGINT, default_int_handler)
File "C:\Program Files\Anaconda3\lib\signal.py", line 47, in signal
handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler))
ValueError: signal only works in main thread  File "C:\Program   
Files\Anaconda3\lib\asyncio\base_events.py", line 409, in run_forever

在尝试了很多 "quick fixes" - 卸载和安装 Jupyter 包等之后,唯一的方法是从头开始卸载和安装 Anaconda。如果您不害怕从头开始安装所有软件包(在我的情况下没有必要),这个解决方案是最好的。

我认为这里的问题是因为tornado 版本不匹配。你应该降级到旧版本的龙卷风来解决这个问题。至少,这对我有用。这应该可以解决问题。

conda install tornado=4.5.3 

使用 conda 全新 安装 jupyter notebook(5.6 版)需要以下软件包,因此 tornado 的工作版本是5.1.

ipykernel:          4.8.2-py36_0       conda-forge
ipywidgets:         7.4.0-py_0         conda-forge
jupyter:            1.0.0-py_1         conda-forge
jupyter_client:     5.2.3-py_1         conda-forge
jupyter_console:    5.2.0-py36_0       conda-forge
nbconvert:          5.3.1-py_1         conda-forge
notebook:           5.6.0-py36_0       conda-forge
qtconsole:          4.3.1-py36_0       conda-forge
terminado:          0.8.1-py36_0       conda-forge
tornado:            5.1-py36h470a237_1 conda-forge
widgetsnbextension: 3.4.0-py36_0       conda-forge

要解决这个问题,可以手动安装最新版本的 tornado:

conda install tornado --update

或从头开始重新安装 jupyter notebook:

conda uninstall jupyter tornado
conda install jupyter

我在使用Jupyter实验室时也遇到了问题,我用命令升级了版本。
pip install jupyterlab —upgrade
避免系统范围的安装
pip install jupyterlab —upgrade —user

升级 ipykernel 对我有用

conda upgrade ipykernel

尝试各种方案后,升级、降级各种依赖conda upgrade --all 为我工作。

conda 升级——对我来说都有效

python -m ipykernel install --user

python3 -m ipykernel install --user

曾在这里工作。

对我来说,这个问题是 ipykernel 版本不匹配。我安装了 google-colab,这降低了我的 ipykernel 的等级。卸载 google-colab 并将 ipykernel 升级到最新版本后,问题就解决了。

pip uninstall google-colab

pip install --upgrade ipykernel

如果您在 Vscode、

中使用 Jupyter Notebook

卸载所有 conda 软件包

安装 Anaconda Clean 以删除 conda 包

conda install anaconda-clean

这将删除您所有的 conda 包

anaconda-clean --yes

然后在Vscode中卸载Jupyter扩展,关闭你当前的jupyter notebook选项卡,重新打开你的jupyter notebook文件,运行然后在pop-up里面重新安装jupyter Vscode.

这对我有用。