用 .bat 一键启动 Jupyter:多环境切换

在 Windows 下,如果直接点 Jupyter 图标再切换 kernel,常会遇到环境不稳定、依赖冲突甚至内核崩溃。更稳妥的做法是:先用 .bat 激活指定 conda 环境,再启动 Jupyter。这样环境变量、依赖路径和 Python 解释器是一致的。

一、JupyterLab 启动脚本

文件名:start_jupyterlab.bat

vbnet 复制代码
@echo off
chcp 65001 >nul
title JupyterLab Launcher

call C:\path\to\anaconda3\Scripts\activate.bat

:menu
cls
echo =========================
echo JupyterLab Menu
echo =========================
echo.
echo 1. base
echo 2. env_a
echo 3. env_b
echo.
echo 0. Exit
echo.
set /p choice=Choose environment:

if "%choice%"=="1" set ENV_NAME=base& goto launch
if "%choice%"=="2" set ENV_NAME=env_a& goto launch
if "%choice%"=="3" set ENV_NAME=env_b& goto launch
if "%choice%"=="0" goto end

pause
goto menu

:launch
cd /d G:\
call conda activate %ENV_NAME%
jupyter lab
pause
goto end

:end
exit

二、Jupyter Notebook 启动脚本

把这里:

css 复制代码
call conda activate %ENV_NAME%
jupyter lab
pause

改为:

css 复制代码
call conda activate %ENV_NAME%
jupyter notebook
pause

其余逻辑完全相同。

三、完整使用流程

  1. 安装 Anaconda 或 Miniconda。
  2. 确认 activate.bat 路径(conda的安装路径里)。
  3. 把常用环境名写进菜单。
  4. cd /d 路径 指定启动根目录。
  5. 双击 .bat,输入编号,自动激活环境并启动。

四、首次启动时的根目录

Jupyter 不是系统资源管理器,它只能看到启动根目录及其子目录

例如:

*cd /d G:*

表示首次进入后,文件树根目录就是 G:

如果写成某个项目目录,就只能看到该项目及其下级文件夹,不能再往上退。

五、再次启动是否会回到历史文件

  • 目录层面:仍以脚本里写的根目录为准。

  • 文件层面

    • JupyterLab 会更倾向恢复上一次的工作区、标签页和布局。
    • Jupyter Notebook 更偏向单文件使用,历史恢复能力弱一些。

所以,Lab 更像"继续上次工作现场",Notebook 更像"重新打开一个笔记本"。

六、Notebook 和 Lab 怎么选

Jupyter Notebook

优点:轻量、简单、上手快、干扰少。

缺点:多文件管理弱,项目化体验一般。

适合:Python 初学者、单个实验、小型练习、课堂学习。

JupyterLab

优点:可同时管理 notebook、脚本、终端、文件夹,适合项目开发。

缺点:界面更复杂,资源占用略高。

适合:科研计算、图像处理、多脚本项目、长期开发用户。

七、结论

如果你经常切 conda 环境,不要依赖图标启动后再切 kernel

更推荐:.bat 先激活目标环境,再启动 Jupyter

入门、轻量任务用 Notebook;项目开发、多文件协同用 Lab。

核心原则只有一句:启动方式决定稳定性,根目录决定你能看到哪里。

相关推荐
IT_陈寒2 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
fliter3 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
fliter4 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪4 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
fliter4 小时前
从 panic 到 Result:用 Rust 重新整理一个 ping 项目的错误处理
后端
森蓝情丶4 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端
JensCS猿5 小时前
从 Spring Boot 回看 SSM 框架:手动挡与自动挡的驾驶哲学
后端
爱勇宝5 小时前
干了近 8 年,一夜之间被裁:AI 时代,程序员最该害怕的不是 AI
前端·后端·程序员
科米米5 小时前
嵌入式日志模块
后端
血小溅5 小时前
三大 AI 编码框架深度对比:GSD vs OpenSpec vs Superpowers
人工智能·后端