Jupyter Notebook中怎么查看内核使用的Python版本
详细介绍在Jupyter Notebook中查看内核正在使用的Python版本与解释器路径的可靠方法,解析sys模块、platform模块与外部kernelspec的实现差异,并排查感叹号命令常见的环境错位陷阱。
要在 Jupyter Notebook 中准确查看当前内核使用的 Python 版本,最权威的做法是在 Notebook 的任意代码单元格中导入 sys 模块,并打印 sys.version 与 sys.executable。这条命令能够直接提取当前处理代码的 Python 解释器主进程信息,不仅输出具体的语义化版本号,还会给出解释器在系统中的绝对物理路径,彻底排除外部终端环境干扰。
一、核心方法:在单元格中执行 sys 探测代码
Jupyter Notebook 的前端页面仅负责输入和展示,实际的代码计算由后台的内核(Kernel,通常是 ipykernel)独立进程执行。想要知道当前内核使用的具体环境,必须让该内核自己汇报自身进程的元数据。
在任意空白代码单元格中输入以下两行代码,并按下 Shift + Enter 运行:
对输出信息的具体字段解析如下:
- 主版本与补丁号:输出开头的
3.10.12是当前内核正在运行的 Python 精确版本。 - 构建与编译器信息:方括号中的
[GCC 11.4.0]展示了底层二进制解释器的编译环境及构建时间戳。 - 解释器绝对路径 (sys.executable):这一项是判断虚拟环境归属的关键。如果路径中包含
/envs/data_analysis/,说明内核正确绑定在了名为data_analysis的 Conda 虚拟环境中;如果显示/usr/bin/python3,则说明内核实际上借用了系统的全局 Python。
二、辅助方法:使用 platform 模块获取格式化版本
如果需要在 Notebook 代码中编写自动化断言(例如检查当前环境是否满足某类科学计算库的最低版本要求),使用 sys.version 截取字符串稍显繁琐。此时可借助 Python 标准库中的 platform 模块,直接提取标准三位语义化版本号:
platform.python_version() 返回纯粹的字符串(如 "3.10.12"),配合 tuple(map(int, platform.python_version_tuple())),可以非常方便地在 Notebook 脚本头部做版本前置校验,避免由于环境版本不匹配导致的语法或库函数错误。
三、核心机制:Jupyter 内核与外部 Shell 的隔离原理
不少初学者在查看版本时,会习惯性地在单元格里使用感叹号运行系统命令,例如输入 !python --version 或 !which python。这种做法经常会导致严重误判,必须明确其底层机理。
! 开头的语句并不会由当前 Python 内核执行,而是由 Jupyter Server 派生出一个临时的底层系统子 Shell(Subshell)。该子 Shell 会根据启动 Jupyter Server 时的系统 PATH 环境变量来寻找默认的 python 命令。如果你的 Jupyter 是在全局基础环境(Base)启动的,但当前 Notebook 切换了某个虚拟环境内核,那么 !python --version 查看到的只是 Base 环境的 Python,而不是当前单元格正在使用的 Python!
从图 2 可以清晰地看出:内核是由 kernel.json 规范文件明确指定解释器二进制路径直接派生出的独立长守护进程,其内部运行上下文(sys.executable)具有唯一权威性;而感叹号命令派生自临时子进程,不具备对内核环境的准确表征能力。
如果你确实需要在 Notebook 中为当前内核安全地安装第三方包或查看当前环境的 pip 依赖,应显式指定当前内核解释器,或使用 IPython 内置的魔术命令:
四、外部核对:在系统终端核查 kernelspec 配置文件
除了在运行中的 Notebook 内部查看,还可以从系统终端(Terminal)层面检查 Jupyter 注册的所有内核定义,从而了解各个内核分别绑定了哪一个 Python 解释器。
1. 列出系统已注册的内核名称与物理路径
在系统终端中运行以下命令:
2. 查看具体内核的 kernel.json 配置文件
在上述输出中,每一个内核都对应一个磁盘目录。查看对应目录下的 kernel.json 文件,即可看到该内核启动时执行的真实 Python 路径:
argv 数组中的第一个元素 /home/developer/miniconda3/envs/py310/bin/python,就是当你在 Jupyter 菜单中选择该内核时,系统真正拉起运行的 Python 二进制执行文件。
五、内核版本与目标环境不一致的排查与修复
很多开发者在查看内核版本后,发现虽然 Notebook 右上角显示的内核名称为“Python (myenv)”,但 sys.executable 打印出的路径却依然指向系统的全局 Python。这通常是因为在创建内核规范时,未将 ipykernel 安装在目标虚拟环境内,导致内核回退使用了默认解释器。
当确认内核版本与预期环境不一致时,可按照以下标准化流程进行修复:
-
进入目标环境:在终端中激活目标虚拟环境或 Conda 环境:
终端命令bashconda activate myenv # 或 source /path/to/venv/bin/activate
-
安装 ipykernel 核心组件:确保当前激活的环境内具备内核驱动能力:
终端命令bashpip install ipykernel
-
向 Jupyter 重新注册当前环境内核:利用当前环境的 python 解释器生成专有内核规范:
终端命令bashpython -m ipykernel install --user --name myenv --display-name "Python 3.10 (myenv)"
-
重新加载验证:回到 Jupyter Notebook 页面,点击顶部菜单的
Kernel->Change Kernel,切换为刚才注册的Python 3.10 (myenv),再次执行sys.executable确认路径已正确更正为目标环境。
import sys; print(sys.executable) 作为检验环境的唯一标准。只有当输出路径确实位于预期的虚拟环境目录中时,你在该环境中安装的依赖包才能被 Notebook 正确加载和使用。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









