Mac运行jupyter kernelgateway报[Errno2]找不到文件或目录如何解决
基础环境与报错背景
- 设备:MacBook
- Python 3.7安装路径:
/usr/local/opt/python@3.7/bin/python3.7 - jupyter、kernel_gateway及相关依赖安装路径:
/Users/user/Library/Python/3.7/bin/ - 已将上述两个路径添加至PATH环境变量
- 执行启动命令时报错:
Error executing Jupyter command 'kernelgateway': [Errno 2] No such file or directory
首先注意:你粘贴的执行命令存在格式错误,重复拼接了两次启动指令且存在不必要的断行,正确的基础启动命令格式应为:
jupyter kernelgateway --api='kernel_gateway.notebook_http' --KernelGatewayApp.seed_uri='./api.ipynb'
分步排查解决
1. 校验PATH配置是否实际生效
手动添加的PATH可能存在仅临时会话生效、优先级被其他路径覆盖的问题,先做两项检查:
- 执行
echo $PATH,确认输出内容中包含/Users/user/Library/Python/3.7/bin和/usr/local/opt/python@3.7/bin两个路径 - 执行
which jupyter,确认返回路径为/Users/user/Library/Python/3.7/bin/jupyter,如果返回其他路径(如系统自带Python路径、conda环境路径),说明当前终端调用的jupyter不是安装了kernel_gateway的版本,需要调整PATH中路径的优先级,把上述两个用户安装路径放到PATH靠前位置。
2. 校验kernel_gateway安装完整性
jupyter的子命令要求对应可执行文件命名为jupyter-<子命令名>格式,执行ls /Users/user/Library/Python/3.7/bin | grep kernelgateway,检查目录下是否存在jupyter-kernelgateway可执行文件。
如果找不到该文件,说明kernel_gateway未正确安装,直接用指定的Python 3.7解释器重新安装即可,执行命令:/usr/local/opt/python@3.7/bin/python3.7 -m pip install jupyter kernel_gateway --user
安装完成后重新检查对应bin目录,确认文件生成。
3. 修复可执行文件配置问题
如果目录下存在jupyter-kernelgateway文件仍报错,做两项修复:
- 给文件添加可执行权限:执行
chmod +x /Users/user/Library/Python/3.7/bin/jupyter-kernelgateway - 校验文件首行解释器路径:执行
head -n 1 /Users/user/Library/Python/3.7/bin/jupyter-kernelgateway,正常返回应为#!/usr/local/opt/python@3.7/bin/python3.7,如果指向不存在的Python路径,直接修改首行内容为上述正确路径即可。
4. 绕过PATH直接启动验证
如果以上步骤检查完仍无法正常调用,可直接用指定Python解释器加载模块启动,跳过PATH查找逻辑,命令如下:/usr/local/opt/python@3.7/bin/python3.7 -m kernel_gateway --api='kernel_gateway.notebook_http' --KernelGatewayApp.seed_uri='./api.ipynb'
如果该命令可正常启动,说明问题根源就是PATH优先级或软链接异常,调整shell配置文件(zsh对应~/.zshrc,bash对应~/.bash_profile)中PATH的配置顺序,把/Users/user/Library/Python/3.7/bin放到所有其他Python、jupyter相关路径前面,保存后执行source 对应配置文件路径让配置生效即可。
内容的提问来源于stack exchange,提问作者Nidhi Bhat G

