最直接的方法是在jupyter notebook的代码单元格中运行import sys; print(sys.version)来查看当前内核所使用的python版本,该命令会输出完整的版本信息及编译细节,若需简洁版本号可使用import platform; print(platform.python_version()),而jupyter通过“内核”机制关联不同的python环境,每个内核对应一个独立的python解释器和依赖集合,因此可通过sys.executable确认当前内核路径,并通过在对应虚拟环境中安装ipykernel并注册内核来添加新环境,切换内核可在notebook的kernel菜单中完成,避免混淆全局python版本与内核环境的关键是始终在目标环境中安装包或使用!pip install在notebook内执行安装,从而确保依赖正确匹配当前运行环境,这一机制有效支持多项目多版本的隔离管理。
在Jupyter Notebook中查看当前Python版本,最直接的方法就是在代码单元格里运行几行简单的Python代码。这能让你快速了解当前Notebook会话所使用的Python解释器版本,对于排查环境问题或确认依赖关系至关重要。
解决方案
打开你的Jupyter Notebook,无论是新建一个文件还是打开一个已有的。在一个代码单元格中,输入以下代码:
import sys print(sys.version)
运行这个单元格(通常是选中单元格后按
Shift + Enter
)。输出会立即显示当前Jupyter Notebook内核所使用的Python版本信息,包括主版本、次版本、修订版本以及编译细节。
立即学习“Python免费学习笔记(深入)”;
如果你需要更简洁的版本号,或者想获取更多关于Python构建环境的信息,也可以尝试使用
platform
模块:
import platform print(platform.python_version()) # 仅显示版本号,如 '3.9.7' print(platform.python_build()) # 显示构建号和日期 print(platform.python_compiler()) # 显示编译器的信息
这些方法能让你一眼看出当前环境的Python版本,这在很多时候是解决“为什么我的代码在这里能跑,那里就报错”这类问题的起点。
Jupyter Notebook中的内核(Kernel)与Python环境有何关联?
刚开始用Jupyter Notebook的朋友,可能会有点困惑:我明明在系统里装了Python 3.10,为什么Jupyter里跑的却是3.9?或者,我的某个项目需要Python 3.7,另一个需要3.9,Jupyter怎么处理?这背后的核心概念就是Jupyter的“内核”(Kernel)。
简单来说,Jupyter Notebook本身只是一个Web应用,它提供了一个交互式的界面。实际的代码执行,是交给它所连接的“内核”来完成的。对于Python Notebook而言,每个内核都对应一个特定的Python执行环境,通常就是一个独立的Python虚拟环境(比如通过Conda或venv创建的)。当你启动一个Notebook文件时,你选择了一个内核,这个内核就会连接到它所关联的Python环境,并使用该环境中的Python解释器、以及该环境下安装的所有库。
这种设计非常巧妙,它允许你在同一台机器上管理和运行多个独立的Python项目,每个项目都可以拥有自己专属的Python版本和依赖库集合,互不干扰。这对于避免“依赖地狱”——即不同项目间库版本冲突——简直是救星。你可以为老项目维护一个Python 3.7的环境,同时为新项目使用Python 3.10,并在Jupyter中轻松切换。
你可以在Jupyter Notebook界面右上角看到当前正在使用的内核名称。更进一步,在终端运行
jupyter kernelspec list
命令,可以查看所有已注册到Jupyter的内核及其对应的路径,这能让你更清晰地了解你的Jupyter都“认识”哪些Python环境。
如何为Jupyter Notebook添加或切换Python环境?
既然Jupyter的强大之处在于能管理多个Python环境,那么如何添加新的环境并进行切换就成了关键。
添加新的Python环境作为Jupyter内核:
如果你使用Conda管理环境,流程如下:
- 创建新环境并指定Python版本:
conda create -n my_new_env python=3.10
- 激活新环境:
conda activate my_new_env
- 在新环境中安装
ipykernel
:
ipykernel
是Jupyter连接Python环境的桥梁。
pip install ipykernel
- 将新环境注册为Jupyter内核:
python -m ipykernel install --user --name my_new_env --display-name "Python (我的新环境)"
--display-name
参数非常实用,它决定了你在Jupyter Notebook新建文件时下拉菜单里看到的名字,起一个直观的名字能省去不少后期查找的麻烦。
如果你使用
venv
管理环境,步骤类似:
- 创建新虚拟环境:
python -m venv my_venv
- 激活新环境:
source my_venv/bin/activate # macOS/Linux # 或 my_venvScriptsactivate # Windows
- 在新环境中安装
ipykernel
:
pip install ipykernel
- 注册为Jupyter内核:
python -m ipykernel install --user --name my_venv --display-name "Python (我的Venv环境)"
完成上述步骤后,重启你的Jupyter Notebook服务,新的内核通常就会出现在“新建”菜单或“更改内核”选项中了。有时候新加的内核没显示出来,别慌,重启一下Jupyter Notebook服务通常就能解决。这就像电脑出了小毛病,重启大法往往有效。
在Jupyter Notebook中切换环境:
一旦你添加了多个Python环境作为内核,切换起来就非常方便了:
- 对于已打开的Notebook: 点击顶部菜单栏的“Kernel” -> “Change kernel”,然后从列表中选择你想要切换到的Python环境。
- 新建Notebook时: 在Jupyter的Launcher页面,直接点击你想要使用的Python环境对应的Notebook图标即可。
Jupyter Notebook版本管理:常见误区与高效排查策略
Jupyter Notebook的环境和版本管理,虽然带来了巨大的灵活性,但也伴随着一些常见的误区,理解这些并掌握排查策略,能大大提升你的开发效率。
常见误区:
-
混淆全局Python与内核Python: 许多人会想当然地认为,在终端里敲
python --version
看到的版本,就是Jupyter Notebook正在使用的版本。但实际上,你Jupyter Notebook里运行的代码,是其当前内核所关联的Python环境。这个环境可能是一个独立的虚拟环境,与你的系统全局Python版本并不一致。务必通过在Notebook中运行
import sys; print(sys.version)
来确认内核的真实版本。
-
包安装位置的误解: 你可能在终端里直接运行
pip install some_package
,然后疑惑为什么在Jupyter里导入这个包会报错。这是因为你可能没有激活Jupyter当前使用的那个虚拟环境就进行了安装,导致包被安装到了系统全局Python或其他环境中,而不是Jupyter内核所关联的环境。
高效排查策略:
-
验证Python解释器路径: 为了确认当前Jupyter内核到底关联的是哪个Python解释器,可以在Notebook中运行:
import sys print(sys.executable)
这个命令会打印出当前内核所使用的Python解释器的完整路径。对照这个路径,你就能清楚地知道它到底指向的是哪个虚拟环境,如果路径不对,那就是内核配置出了问题。
-
确保在正确环境中安装包: 解决包安装位置误解的最佳方法是:
- 方法一(推荐): 始终确保你在终端激活了Jupyter Notebook当前使用的那个Python环境(比如
conda activate my_env
或
source my_venv/bin/activate
),然后再执行
pip install
命令。
- 方法二(快速验证): 直接在Jupyter Notebook的代码单元格里使用
!
前缀来执行shell命令,这样可以确保命令在当前内核所关联的环境中运行。例如:
!pip install pandas
我个人更倾向于后者,尤其是在快速验证或演示时,省去了切换终端环境的麻烦,保证了操作的即时性。
- 方法一(推荐): 始终确保你在终端激活了Jupyter Notebook当前使用的那个Python环境(比如
-
检查当前环境已安装的包: 当遇到
ModuleNotFoundError
或其他与包相关的问题时,检查当前环境已安装的包及其版本是第一步。
!pip list
或者更Pythonic地:
import pkg_resources for dist in pkg_resources.working_set: print(f"{dist.project_name}=={dist.version}")
这些命令能帮你列出当前Jupyter内核环境中所有已安装的包及其版本。很多时候代码运行出错,就是因为某个库的版本不对,或者压根没安装。
Jupyter Notebook的版本管理和环境隔离,虽然初看起来可能有点绕,但一旦你理解了“内核”和“环境”之间的对应关系,它会成为你Python开发中非常强大的工具。多花点时间理解这些,能帮你避免很多不必要的“环境问题”导致的崩溃和时间浪费。
评论(已关闭)
评论已关闭