如何在Jupyter Notebook中运行指定版本Julia并修复内核连接故障
故障原因
触发MethodError: no method matching setindex!(::Ptr{Nothing}, ::Ptr{Nothing})报错的核心原因是Julia 0.7.0环境下安装的ZMQ.jl包版本不兼容:新版ZMQ.jl已经放弃对Julia 0.7的支持,移除了旧版本底层指针操作接口,导致IJulia的心跳线程启动失败,内核无法建立连接。从Julia 0.7命令行启动Notebook报Process Exited(1)也是同一原因触发的进程崩溃。
修复步骤
- 清理不兼容包
启动Julia 0.7.0的REPL命令行,执行以下命令移除当前环境下版本不匹配的IJulia和ZMQ:using Pkg Pkg.rm("IJulia") Pkg.rm("ZMQ") - 安装兼容版本依赖
Julia 0.7.0适配的最后稳定版依赖为ZMQ.jl v1.0.0、IJulia v1.21.2,禁止安装更高版本,在0.7的REPL中执行:
安装过程如果提示依赖版本冲突,全部选择按兼容约束降级对应包即可。Pkg.add(PackageSpec(name="ZMQ", version="1.0.0")) Pkg.add(PackageSpec(name="IJulia", version="1.21.2")) - 重新注册独立内核
兼容版IJulia安装完成后,在0.7的REPL中执行以下命令,单独注册0.7版本的Jupyter内核,避免和已有的1.6.2内核配置冲突:using IJulia installkernel("Julia 0.7.0", "--depwarn=no") - 启动验证
彻底关闭所有残留的Jupyter、Julia进程,从Anaconda命令行执行jupyter notebook启动服务(不要在Julia 0.7的REPL中调用IJulia.notebook()启动,旧版IJulia的路径识别逻辑存在兼容问题容易触发启动失败),新建笔记本时选择Julia 0.7.0内核即可正常连接运行。
注意事项
- Julia 0.7环境配置完成后不要执行
Pkg.update(),否则会将锁定好的兼容版ZMQ、IJulia升级到不支持的新版本,再次触发相同报错。 - 如果重新注册内核后依然无法连接,先打开Windows路径
C:\Users\josh\AppData\Roaming\jupyter\kernels\,删除所有名称包含julia-0.7的文件夹,再重新执行内核注册命令即可。 - 不同版本Julia的包存储目录完全隔离,上述针对0.7版本的包安装、降级操作不会影响已经正常运行的Julia 1.6.2环境。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

