Kernel退出代码1073741845伴随traitlets 5.0警告及zeromq错误如何解决?
问题原因分析
- 两条
traitlets相关的FutureWarning属于版本兼容类警告,本身不会直接触发内核崩溃,仅提示当前使用的traitlets 5.x版本不再支持配置项中带额外引号的Unicode/Bytes写法,是jupyter相关旧组件和新版traitlets不兼容导致的提示。 - 触发内核崩溃、退出码返回
1073741845的核心原因是Bad file descriptor (bundled\zeromq\src\epoll.cpp:100)报错:该报错来自jupyter前后端通信的底层依赖库zeromq,本质是Windows环境下的套接字文件描述符异常,通常由pyzmq(zeromq的Python绑定包)版本和jupyter/ipykernel版本不匹配、pyzmq安装包损坏、虚拟环境依赖冲突三类问题导致。
排查步骤
- 激活对应虚拟环境后执行命令
pip list | findstr "traitlets pyzmq jupyter ipykernel",确认各核心依赖的版本号,排查是否存在跨大版本的不兼容情况。 - 运行无业务逻辑的空jupyter文件,仅执行简单打印语句,若仍出现崩溃即可排除业务代码问题,确定为环境依赖故障。
- 检查当前设备是否同时安装了多个Python/conda环境,排查是否存在环境变量冲突导致jupyter调用了其他环境的依赖。
解决方案
- 修复traitlets兼容警告:可选择降级traitlets到4.x适配旧版jupyter组件,执行命令
pip install traitlets==4.3.3;也可升级jupyter相关组件到适配traitlets 5.x的版本,执行命令pip install --upgrade jupyter ipykernel。 - 解决zeromq核心报错:优先通过conda重装适配性稳定的pyzmq版本,执行命令
conda install pyzmq=23.2.1;若conda安装失败可通过pip强制重装对应版本:pip uninstall pyzmq -y && pip install --force-reinstall pyzmq==23.2.1,23.x版本pyzmq是目前Windows环境下兼容性最稳定的版本。 - 若上述操作无效,直接删除原有虚拟环境后重建,重新安装所有依赖即可清除旧环境的依赖冲突残留。
- 如果是在VS Code中运行jupyter触发该问题,升级VS Code的Jupyter插件到最新版本,同时临时禁用其他Python相关插件排查冲突即可。
内容的提问来源于stack exchange,提问作者ranningw
相关产品推荐
相关产品推荐

