ML-For-Beginners Jupyter Notebook 单元格运行后不显示输出怎么排查?
【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners
在 ML-For-Beginners 课程里打开任意 lesson 的notebook.ipynb、选中代码块点运行之后,最常见的卡点是:单元格显示已经执行,但看不到print的结果、图表或报错信息。ML-For-Beginners 的官方 TROUBLESHOOTING.md 把 "Cells are running but not showing output" 单列为一个条目,并给出了 kernel、图表显示、Jupyter server 和 VS Code 集成几类对应的处理路径。本文按"先跑通一个最小验证单元格,再按症状对号入座"的顺序,给出文档中实际支持的排查步骤;课程要求 Python 3.8 及以上并安装 Jupyter,这是排查的环境前提。
准备:用最小单元格确认"输出链路"是否通
在做任何重装、换 kernel 之前,先用一个不依赖任何数据或第三方库的单元格做基线测试。这是课程 2-Regression/1-Tools/README.md 里 "Exercise - work with a notebook" 的标准操作:
- 打开本课程的 notebook,例如 notebook.ipynb;
- 在代码块里输入
print('hello notebook'),选中运行图标执行; - 课程文档给出的预期输出(文档示例):
hello notebook- 这一步能显示输出:说明 Jupyter 服务、kernel 和渲染链路基本正常,问题多半出在原 notebook 的具体单元格内容、执行顺序或图表配置上,直接跳到图表类输出不显示一节;
- 连最小输出都不显示:按下面的顺序继续排查。
先判断你属于哪类症状
TROUBLESHOOTING.md 把"没有输出"拆成了几个不同的现象,对应不同的处理路径,先对号再操作:
| 现象 | 文档中的问题条目 | 处理入口 |
|---|---|---|
单元格显示[*],还在执行中 | Cells are running but not showing output | 先等它执行完 |
| 单元格已结束但输出为空 | 同上 | Restart & Run All重建输出 |
| 运行后整个 notebook 无响应、提示符卡住 | Can't run cells | 检查 Jupyter server |
| print 有输出但图表不出现 | Plots not showing in Jupyter | 检查%matplotlib inline与plt.show() |
| kernel 反复崩溃重启 | Kernel keeps dying or restarting | 逐个单元格定位 + 内存检查 |
| 在 VS Code 里 notebook 都打不开 | VS Code Integration | 扩展与解释器配置 |
确认单元格是否还在运行,再重启内核重建输出
按文档 "Notebook Cell Issues" 条目的顺序操作:
- 看单元格的执行标记:正在执行的单元格会显示
[*]指示符。部分课程 notebook(例如时间序列课程要下载和处理数据的步骤)执行时间较长,先等它跑完再判断; - 如果单元格已执行完仍没有输出,执行
Kernel → Restart & Run All:重启 kernel 并重新运行全部单元格,让所有输出在干净的 kernel 状态下重建; - 执行后逐个检查:
print语句应该恢复输出;如果只有个别单元格异常,回到第 1 步单独重跑该单元格定位。
Kernel 排查:选错、缺失或无法启动
确认当前 kernel 是否正确
文档 "Kernel Issues" 给出的入口是Kernel → Change Kernel:打开后确认当前 notebook 绑定的是哪个 Python kernel,然后选择正确的 Python 版本。如果列表中缺少你正在用的环境,在已激活该虚拟环境的终端中注册:
python -m ipykernel install --user --name=ml-env注册完成后回到 Jupyter 用Kernel → Change Kernel重新选择。
kernel 无法启动时重装 ipykernel
如果 kernel 根本起不来,按文档顺序重装并重新注册:
# Reinstall ipykernel pip uninstall ipykernel pip install ipykernel # Register the kernel again python -m ipykernel install --user在虚拟环境里注册带显示名的 kernel
文档 "Environment and Configuration" 一节说明:包明明装好了、notebook 里却找不到,通常是 notebook 没有使用你 venv 里的 kernel。在已激活 venv 的终端中执行:
# Ensure notebook uses the correct kernel # Install ipykernel in your venv pip install ipykernel python -m ipykernel install --user --name=ml-env --display-name="Python (ml-env)"然后按文档提示:# In Jupyter: Kernel → Change Kernel → Python (ml-env),在 Jupyter 中切换到这个 kernel。
kernel 反复崩溃、重启
文档 "Kernel keeps dying or restarting" 给出的处理顺序:
Kernel → Restart;Kernel → Restart & Clear Output清空输出后重来;- 怀疑内存问题时参照运行缓慢与内存不足的处理一节;
- 逐个单元格运行(Try running cells individually),定位是哪段代码导致 kernel 崩溃。
图表类输出不显示:启用 inline 绘图并显式 show
print正常但 matplotlib 图表不出现时,文档 "Plotting Issues" 条目的解法是在代码中启用 inline 绘图并显式显示:
# Enable inline plotting %matplotlib inline # Import pyplot import matplotlib.pyplot as plt # Show plot explicitly plt.plot(data) plt.show()课程里的 notebook 本身就是这么写的:2-Regression/4-Logistic/README.md 画 ROC 曲线的代码、7-TimeSeries/1-Introduction/README.md 加载电力数据的代码块都以%matplotlib inline开头。如果你的课程单元格缺少这两处中的任何一处(magic 或plt.show()),图表不会出现在 notebook 里。
关于文档中的示例结果:Logistic 一课中print(auc)打印出的 AUC 值、diabetes 数据集print(X.shape)的(442, 10)等,都是文档示例数值,只能用来确认"输出区域能正常显示内容",不要当作固定预期结果做校验。
点 Run 完全没反应:先检查 Jupyter server
这一类现象文档单独列为 "Can't run cells - no response when clicking 'Run'",处理顺序是:
- 回到启动 Jupyter 的终端,确认 Jupyter server 还在运行;
- 刷新浏览器页面;
- 关闭 notebook 后重新打开;
- 重启 Jupyter server。
如果问题是 notebook 页面本身打不开("Jupyter won't launch in browser"),文档给了两条路:
# Try specifying the browser jupyter notebook --browser=chrome # Or copy the URL with token from terminal and paste in browser manually # Look for: http://localhost:8888/?token=...即指定浏览器启动,或从终端复制带 token 的http://localhost:8888/?token=...地址手动粘贴到浏览器。
在 VS Code 中使用 notebook 的前置检查
如果你不是在浏览器而是在 VS Code 里打开 notebook,文档 "VS Code Integration" 针对 "Jupyter notebooks won't open in VS Code" 给出四步:
- 在 VS Code 中安装 Python 扩展;
- 安装 Jupyter 扩展;
Ctrl+Shift+P→ "Python: Select Interpreter",选择正确的 Python 解释器;- 重启 VS Code。
运行缓慢或内核卡死的处理
kernel 长时间没有输出、提示符一直卡在[*]时,可能不是"没输出"而是内存或性能问题。文档 "Performance Issues" 给出的手段:
Kernel → Restart释放内存;- 关闭不用的 notebook 释放资源;
- 开发阶段用更小样本测试:
df_sample = df.sample(n=1000); - 用 IPython magic 找耗时操作:
%time operation() # 计时单次操作 %timeit operation() # 多次运行计时如果已经报MemoryError或 kernel 在处理数据时死亡,文档 "Common Error Messages" 给出了三类代码级处理:
# Load data in chunks for chunk in pd.read_csv('large_file.csv', chunksize=10000): process(chunk) # Or read only needed columns df = pd.read_csv('file.csv', usecols=['col1', 'col2']) # Free memory when done del large_dataframe import gc gc.collect()其中large_file.csv、col1/col2是文档中的占位写法,替换为你自己的数据文件与列名。
验证与后续动作
排查完成后回到最小验证单元格:print('hello notebook')应再次显示hello notebook(文档示例);然后运行目标 lesson 的 notebook,确认print输出和图表(如课程文档展示过的 scatterplot、ROC 曲线)都出现在单元格下方,这一步同时验证了 kernel、inline 绘图和输出渲染三条链路。
如果按以上路径仍无法解决,按 TROUBLESHOOTING.md "Still Having Issues?" 的建议提交 issue,包含:操作系统及版本、Python/R 版本、完整报错信息(full traceback)、复现步骤、已经尝试过的手段。
【免费下载链接】ML-For-Beginners12 weeks, 26 lessons, 52 quizzes, classic Machine Learning for all项目地址: https://gitcode.com/GitHub_Trending/ml/ML-For-Beginners
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考