JupyterLab与终端Python版本不一致的原因及修复方案(macOS)
问题原因
- Jupyter内核与启动环境不匹配:你终端中执行的
jupyter-lab属于/Library/Frameworks/Python.framework/Versions/3.11环境,但Jupyter实际加载的内核关联到了/usr/local/bin/python3这个独立Python环境,导致sys.executable显示的是内核对应的Python路径,而非启动Jupyter的环境路径。 - Jupyter的Shell环境PATH与终端不同:Jupyter中
!开头的命令使用的Shell环境PATH和终端当前PATH不一致,终端里/opt/homebrew/bin优先级更高,所以python指向brew的Python3;但Jupyter的PATH中系统默认路径优先级更高,导致!python调用了macOS自带的Python2.7。
修复方案
1. 为目标Python环境注册Jupyter内核
先选择你想要在Jupyter中使用的Python环境(比如终端中的/opt/homebrew/bin/python3,或者/Library/Frameworks/Python.framework/Versions/3.11/bin/python3),确保该环境安装ipykernel:
# 以brew的Python3为例 /opt/homebrew/bin/python3 -m pip install ipykernel
再将该环境注册为Jupyter内核:
/opt/homebrew/bin/python3 -m ipykernel install --user --name brew-python3 --display-name "Python (Homebrew)"
执行后,该环境会被添加到Jupyter的内核列表中。
2. 在Jupyter Lab中切换内核
启动Jupyter Lab后,打开目标笔记本:
- 点击右上角当前的内核名称(比如默认的"Python 3")
- 在弹出菜单中选择刚才注册的"Python (Homebrew)"内核
切换完成后,重新执行sys.executable就会显示目标环境的Python路径。
3. 统一Jupyter与终端的PATH(解决!python版本问题)
如果需要让Jupyter中!python调用到目标环境的Python,有两种方式:
临时设置(单笔记本生效)
在笔记本开头添加代码,将目标Python所在目录加到PATH最前面:
import os os.environ['PATH'] = '/opt/homebrew/bin:' + os.environ['PATH']
之后执行!python -V就会显示brew的Python3版本。
永久设置(全局生效)
- 生成Jupyter配置文件(未生成过的话):
jupyter lab --generate-config
- 打开配置文件
~/.jupyter/jupyter_lab_config.py,找到c.Spawner.env配置项,修改为:
c.Spawner.env = {'PATH': '/opt/homebrew/bin:/usr/bin:/bin'}
将目标路径放在PATH最前面确保优先级最高,重启Jupyter Lab后即可生效。
内容的提问来源于stack exchange,提问作者42piratas
相关产品推荐
相关产品推荐

