Jupyter Notebook 配置使用虚拟环境中(virtualenv) 内核

如何为Jupyter Notebook 配置使用虚拟环境中(virtualenv) 内核

日常使用 Jupyter Notebook 时,我一直依赖宿主机环境进行开发。后来为每个应用virtualenv建立了多套虚拟环境,其中为了隔离 web 开发相关依赖,在D:\play_web目录下创建了独立虚拟环境,但如果我想用jupyter notebook,默认是无法切换和启用虚拟环境的内核的。

经过一番尝试,我找到了一套简单有效的解决方案:通过安装依赖、注册内核,让 Jupyter 支持虚拟环境的自由切换。整个过程步骤清晰,且一次测试成功,现在整理成详细流程,供有类似需求的开发者参考。

核心原理:让 Jupyter "识别" 虚拟环境

Jupyter 本身不直接关联虚拟环境,需借助ipykernel组件搭建 "桥梁"------ipykernel能将虚拟环境的 Python 解释器与 Jupyter 关联,再通过注册操作,将虚拟环境添加到 Jupyter 的内核列表中,最终实现环境切换。

步骤 1:激活目标虚拟环境

所有操作需在虚拟环境中执行,因此第一步需先激活D:\play_web环境(以 Windows 系统为例,CMD 与 PowerShell 命令通用):

  1. 打开命令行工具,进入虚拟环境的Scripts目录:

    cd D:\play_web\Scripts

  2. 执行激活命令:

    activate

  3. 命令行前缀显示(play_web)时,说明虚拟环境已激活,后续操作将基于该环境执行。

步骤 2:安装 ipykernel 依赖

ipykernel是连接虚拟环境与 Jupyter 的核心组件,需在激活的虚拟环境中安装:

复制代码
pip install ipykernel

安装过程无需额外配置,等待终端提示 "Successfully installed" 即完成。若网络较慢,可添加国内镜像源(如-i ``https://pypi.tuna.tsinghua.edu.cn/simple)加速。

步骤 3:注册虚拟环境为 Jupyter 内核

将激活的play_web环境注册到 Jupyter,需指定内核标识与显示名称,方便后续识别:

复制代码
python -m ipykernel install --name play\_web\_kernel --display-name "Python (play\_web)" --user

参数说明:

  • --name:内核的内部标识,建议与虚拟环境名关联(如play_web_kernel),便于后续管理;

  • --display-name:Jupyter 界面中显示的内核名称(如Python (play_web)),需清晰区分不同环境;

  • --user:仅为当前用户注册内核,无需管理员权限,避免权限冲突。

终端提示 "Installed kernelspec play_web_kernel in ..." 时,注册成功。

步骤 4:验证内核配置效果

  1. 启动 Jupyter Notebook(无需激活虚拟环境,直接在命令行执行):

    jupyter notebook

  2. 在 Jupyter 界面中,新建 Notebook 或打开现有文件,点击顶部菜单栏的Kernel → Change Kernel

  3. 下拉列表中若出现 "Python (play_web)",说明配置生效,选择该选项即可切换到虚拟环境。

补充:删除无效内核

若后续需删除已注册的内核,可按以下步骤操作:

  1. 查看所有已注册的内核及标识:

    jupyter kernelspec list

  2. 根据列表中的内核标识(如play_web_kernel),执行删除命令:

    jupyter kernelspec remove play_web_kernel

  3. 输入y确认后,内核即被删除。

相关推荐
l木本I11 分钟前
uv 技术详解
人工智能·python·深度学习·机器学习·uv
宁大小白24 分钟前
pythonstudy Day31
python·机器学习
江上鹤.14843 分钟前
Day34模块和库的导入
python
我爱鸢尾花1 小时前
第十四章聚类方法理论及Python实现
大数据·python·机器学习·数据挖掘·数据分析·聚类
言之。2 小时前
Dropbear远程连接
python
dhdjjsjs2 小时前
Day34 PythonStudy
python
一个java开发3 小时前
Dask 配置文件加载机制说明
大数据·python
bj_zhb3 小时前
图片的base64表示
python·llm
飞Link3 小时前
【Django】Django 调用外部 Python 程序的完整指南
后端·python·django·sqlite
周杰伦_Jay3 小时前
【Java集合与线程池深度解析】底层原理+实战选型+避坑指南(附代码)
java·开发语言·python