Homebrew更新Python后Jupyter报‘bad interpreter’错误求助
这个问题本质是Jupyter的启动脚本或内核配置里硬编码了已经被Homebrew移除的旧Python路径,咱们一步步来修复:
1. 定位并修复Jupyter启动脚本的shebang行
首先找到Jupyter实际调用的脚本路径:
which jupyter
通常会输出类似/usr/local/bin/jupyter的结果,接着查看这个脚本的第一行(决定解释器的shebang行):
head -n 1 $(which jupyter)
如果这里显示的是那个不存在的/usr/local/.../python2.7路径,直接用文本编辑器修改它:
sudo vim $(which jupyter)
把第一行的旧Python路径替换成当前可用的路径——比如你用which python得到的第一个结果(Homebrew的Python2.7),如果想改用Python3的话,换成/usr/local/bin/python3。保存退出后再启动Jupyter试试。
2. 检查并更新Jupyter内核配置
如果第一步没解决问题,大概率是内核配置里也存着旧路径。先列出所有已安装的Jupyter内核:
jupyter kernelspec list
找到对应Python2的内核(通常命名为python2),查看它的配置文件:
cat $(jupyter kernelspec list | grep python2 | awk '{print $2}')/kernel.json
如果里面"argv"数组里的Python路径还是失效的旧地址,就修改这个配置文件:
sudo vim $(jupyter kernelspec list | grep python2 | awk '{print $2}')/kernel.json
把路径替换成当前有效的Python2.7路径,保存后重启Jupyter即可。
3. 重新安装Jupyter(终极兜底方案)
如果上面的方法都没效果,直接用当前的Python重新安装Jupyter,彻底替换所有旧配置:
- 用Python2重装:
pip install --upgrade --force-reinstall jupyter
- 用Python3重装:
pip3 install --upgrade --force-reinstall jupyter
这样会重新生成所有启动脚本和内核配置,直接用当前的Python路径覆盖旧的失效路径。
补充一句:你之前试的brew link --overwrite python是修复Homebrew自身的符号链接,但Jupyter的配置是独立于Homebrew的,所以得单独处理这些脚本和内核配置哦~
内容的提问来源于stack exchange,提问作者orome

