最可靠方式是在Notebook代码单元格中运行import sys; print(sys.version),它准确反映当前内核实际使用的Python版本;而!python --version或终端命令显示的是shell环境版本,可能与内核不一致。

直接看当前内核用的哪个 Python 版本,别只查系统默认版本——Jupyter 用的是内核,不是你终端里敲 python --version 那个。
在 notebook 单元格里执行 sys.version
这是最可靠的方式,它反映的是当前 kernel 实际运行的 Python 解释器版本:
- 新建一个代码单元格,输入并运行:
import sys<br>print(sys.version)
- 输出类似
3.10.12 (main, Jun 20 2024, 15:48:15) [GCC 11.2.0],开头数字就是主次版本号 - 如果想更结构化地获取(比如做条件判断),用
sys.version_info:它返回sys.version_info(major=3, minor=10, micro=12, ...) - 注意:不要写错模块名,
import syS或import Sys会报NameError
用 !python --version 看的是 shell 环境的 Python
这个命令在 notebook 里也能跑,但它调用的是 shell 的 python 命令,不一定是当前 kernel 的 Python:
- 运行
!python --version输出Python 3.9.18,但sys.version显示3.10.12?说明 kernel 和 shell 环境不一致 - 常见于 conda/virtualenv 环境未激活、或 Jupyter 启动时没走对环境路径
- 想确认 shell 下到底调用哪个解释器,可以加一句
!which python或!where python(Windows)
查 sys.executable 确认 Python 解释器路径
光看版本号还不够,有时得知道它从哪来——尤其当你装了多个 Python 或混用 conda/pip/virtualenv:
立即学习“Python免费学习笔记(深入)”;
- 运行
import sys<br>print(sys.executable)
- 输出类似
/home/user/miniconda3/envs/ml/bin/python或C:\Users\name\anaconda3\envs\py310\python.exe - 路径里带
envs/xxx表示是 conda 环境;带venv或.virtualenvs是 virtualenv;纯anaconda3/或Python310/是基础环境 - 如果路径指向
/usr/bin/python或C:\Python39\这类系统级路径,那 kernel 很可能没按预期切换
Kernel 菜单里显示的名字不一定准确
Jupyter 右上角 Kernel → Change kernel 列出的名字(比如 “Python 3” 或 “myenv”)是人工设置的显示名,和实际版本无关:
- 同一个名字可能对应不同 Python 版本(比如重装环境后没更新 kernel 名称)
- 名称里写 “Python 3.9”,但实际
sys.version是3.10.12?说明 kernel 注册信息没刷新,或注册时用错了环境 - 真正生效的是 kernel.json 文件里的
argv字段,它指定了具体调用哪个python可执行文件
最易被忽略的点:你改了 conda 环境、升级了 Python、甚至重装了 ipykernel,但没重新运行 python -m ipykernel install --user --name xxx --display-name "xxx",旧 kernel 依然在用老解释器。版本号不会自动同步,得手动重建 kernel。


















