
刚接触 Python 实验时最让人头疼的往往不是语法本身而是环境搭了一半卡住、Jupyter 启动不了、代码报错看不懂、最后想把结果导成报告又无从下手。这篇文章会从零开始把 Python 实验环境的搭建、Jupyter 的日常操作、AI 辅助调试的完整流程以及实验结果报告导出的方法串起来讲清楚。无论你是刚准备安装 Python 的新手还是已经有基础但想梳理工作流的同学都能从中得到一套可以直接复用的方案。1. 背景与核心概念1.1 为什么需要一套完整的 Python 实验环境Python 实验环境和普通“写脚本跑一下”是不同的场景。实验环境通常意味着需要反复修改和运行代码片段需要保存每次运行的结果、图表和文字说明需要把实验过程整理成可阅读的报告经常会用到第三方库比如数据分析、可视化、机器学习相关工具包需要能在不同设备上复现同样的环境。如果你的电脑上只有一个最新版 Python 解释器也没有 Notebook 工具那你把每个实验写成一个 .py 文件再在终端里运行确实也能跑通但效率和可读性都比较差。更合理的做法是用 Anaconda 管理 Python 和依赖包用 Jupyter Notebook / Jupyter Lab 作为交互式实验平台再配合 AI 工具辅助调试最后通过导出功能生成报告。这套流程无论是课程实验、毕业设计还是日常工作里的数据分析和模型验证都能直接套用。1.2 Jupyter 到底是什么Jupyter 是一个开源的交互式计算环境它允许你在浏览器中创建和编辑文档这种文档里可以同时包含代码、运行结果、图表、Markdown 文本等。每一个代码块叫“单元格Cell”可以单独运行非常适合做实验记录和技术分享。Jupyter 的名称来源于三种核心语言的缩写Julia、Python 和 R但现在的内核Kernel已经支持几十种语言。我们平时最常用的就是 Python 内核。Jupyter 有两个常见入口名称定位特点Jupyter Notebook经典的单文档交互界面打开后是一个文件列表页进入某个 .ipynb 文件后以单元格为单位编辑运行Jupyter LabNotebook 的下一代界面可以在同一个窗口里打开多个 Notebook、终端、文件管理器布局更接近 IDE如果你只是平时做课程实验两者都可以如果你同时要写多个脚本、看数据文件、开终端我更推荐 Jupyter Lab。1.3 AI 调试在实验流程中的定位“AI 调试”并不是说完全把代码交给 AI 写而是把 AI 当作一个帮你分析报错、优化代码、理解库用法的辅助工具。常见的使用方式包括把报错信息粘贴给 AI让它解释原因告诉 AI 你的输入和预期输出让它生成核心函数让 AI 检查某段代码的时间复杂度或潜在 bug让 AI 把一段复杂代码拆解成更小的步骤来解释。在 Jupyter 里使用 AI 调试的体验尤其好因为单元格天然适合“发现问题 → 修复 → 重新运行”的循环每次修改范围小、反馈快。2. 环境准备与版本说明2.1 安装方式选择这里介绍两种方案推荐新手使用第一种。方案一安装 Anaconda推荐Anaconda 是一个 Python 发行版它把 Python 解释器、pip、conda 包管理器、Jupyter Notebook、Jupyter Lab、Spyder以及 pandas、numpy、matplotlib 等常用库打包在了一起。装了 Anaconda你就不用手动一个个安装数据科学基础库。方案二只安装官方 Python 后续手动装包如果你对 Python 已经比较熟悉或者硬盘空间有限也可以只安装官方 Python然后手动执行pip install jupyterlab pandas numpy matplotlib这两种方式本质不冲突。Anaconda 适合需要快速进入实验状态的人单独安装 Python 则更轻量。本文示例以 Anaconda 作为主线因为它是目前数据科学和实验场景最常见的环境。2.2 安装步骤简述以 Windows 为例安装 Anaconda 时需要注意到 Anaconda 官网下载对应系统的安装包版本以当前官网提供的最新稳定版为准安装过程中建议保持默认安装路径避免路径中包含中文或空格安装类型选择“Just Me”即可安装到“Advanced Options”时可以勾选“Add Anaconda3 to my PATH environment variable”但如果版本界面有提示风险也可以不勾选而是通过 Anaconda Prompt 输入命令来使用 conda 和 jupyter安装完成后重新打开命令行或 Anaconda Prompt输入以下命令验证python --version conda --version jupyter --version如果你看到类似输出说明环境已经准备好Python 3.x.x conda 4.x.x不同操作系统和不同安装版本输出会略有不同关键是命令能正常识别。版本说明Python 目前版本迭代较快具体小版本号不需要纠结。文章里的示例代码基于 Python 3 通用写法pandas、matplotlib 等库也均以常见稳定版本为准。如果你的环境版本不同先确保重要依赖能够安装成功再继续下面的操作。2.3 虚拟环境的作用实验过程中我们经常遇到一个项目需要 pandas 1.x另一个项目需要 pandas 2.x或者依赖之间互相冲突。为了避免“装了这个库另一个库用不了”的情况建议在实验项目里使用虚拟环境。Anaconda 创建虚拟环境命令如下conda create -n experiment python3.10创建完成后激活环境conda activate experiment激活后提示符前面会出现(experiment)说明当前已经进入该环境。以后安装包都在这个环境里操作不同环境互不干扰。3. Jupyter 核心操作与原理拆解3.1 启动与目录切换安装好 Anaconda 后启动 Jupyter 有两种常见方式。第一种是在终端或 Anaconda Prompt 中直接输入jupyter notebook或者jupyter lab第二种是在开始菜单中找到 Anaconda Navigator在界面里点击 Launch 按钮启动 Jupyter Notebook 或 Jupyter Lab。启动 Jupyter Notebook 后默认会在浏览器中打开一个文件列表页。这个页面展示的目录取决于你在哪个目录下执行的启动命令。如果你想把实验项目放在某个固定目录可以先切到目标目录再启动 Jupytercd D:/my_project/python_exp jupyter notebook如果你用的是 Jupyter Lab想切换启动目录方法和 Notebook 一样先进入目录再执行cd D:/my_project/python_exp jupyter lab如果你已经打开了 Jupyter在文件列表页可以看到文件树的导航可以点击进入任意文件夹。页面顶部通常有“Upload”按钮可以上传本地的 .ipynb 文件或数据集。3.2 创建一个 Notebook在 Jupyter Notebook 文件列表页右上角点击“New”选择“Python 3”就会新建一个 Untitled.ipynb 文件。Jupyter 文件的后缀是 .ipynb它本质是一个 JSON 格式的文本文件。在 Jupyter Lab 中新建 Notebook 的方式是菜单栏 File → New → Notebook然后选择 Python 3 内核。新建后你会看到一个单元格里面可以输入 Python 代码。输入下面的内容并点击运行按钮或者按 ShiftEnter 运行print(Hello, Jupyter!)单元格下方会显示输出结果Hello, Jupyter!每次按 ShiftEnter 不仅会运行当前单元格还会自动跳转到下一个单元格非常适合连续编写实验步骤。3.3 单元格的两种模式Jupyter Notebook 的单元格分为两种类型类型用途快捷键切换Code运行 Python 代码Esc 后按 YMarkdown写文字、标题、公式、表格Esc 后按 M在编写实验报告时建议描述步骤和结论用 Markdown 单元格实际代码用 Code 单元格。这样最终导出为 HTML 或 PDF 后可读性会好很多。比如在 Markdown 单元格里写## 实验一验证 Python 基本语法 本实验主要验证变量类型和输出格式。然后按 ShiftEnter 渲染就能看到格式化的标题和文字。3.4 常用快捷键与魔法命令Jupyter 的高效率很大程度来自快捷键。几个最常用的ShiftEnter运行当前单元格并进入下一个单元格AltEnter运行当前单元格并在下方新建一个单元格Esc从编辑状态退出到命令模式A在单元格上方插入新单元格B在单元格下方插入新单元格D D连续按两次 D删除当前单元格M把当前单元格切换为 MarkdownY把当前单元格切换为 CodeCtrlEnter运行当前单元格但不跳转到下一个。除了快捷键Jupyter 还支持魔法命令。魔法命令以%或%%开头用来增强单元格功能。# 统计当前单元格运行时间 %time sum(range(1000000))# 让 matplotlib 图表直接显示在 Notebook 中 %matplotlib inline# 查看变量占用内存 %whos这些魔法命令在日常实验中非常实用可以在 Jupyter 单元格中直接输入%magic查看详细说明。3.5 Jupyter 中创建 .py 文件有时候我们想在 Jupyter 里直接写一个完整的 .py 脚本文件而不是 Notebook 的 .ipynb 格式。在 Jupyter 的“New”菜单里只能选 Notebook 和文本文件这里有两种变通方式方式一在 Jupyter Lab 中创建在 Jupyter Lab 的左侧文件管理器中右键点击目标目录选择“New → Python File”就可以直接创建 .py 文件。在文件里写好代码后可以右键选择“Run in Interactive Window”或直接在终端中运行。方式二把 Notebook 导出为 .py打开 Notebook点击菜单栏 File → Download as → Python (.py)就能把当前所有代码单元格导出为一个 .py 脚本文件。这种方式适合把实验代码整理成可独立运行的项目脚本。4. 用 AI 辅助调试 Python 代码4.1 AI 辅助调试的基本流程在 Jupyter 中使用 AI 辅助调试建议遵循下面的流程明确目标先想清楚你要做什么输入是什么期望输出是什么写代码或让 AI 生成代码如果是自己写遇到报错时不要直接把完整的项目代码粘贴给 AI而是提炼出出错的那一小段和完整报错信息粘贴报错把异常类型、错误行号、出错代码片段发给 AI理解原因让 AI 解释错误是什么为什么会发生验证修复把 AI 提供的修复方案复制到新单元格中运行确认输出是否符合预期补充边界测试AI 修复的代码可能只覆盖了当前输入最好手动测几个边界值比如空列表、0、None 等。4.2 一个典型调试示例假设我们有一个单元格运行下面的代码data [10, 20, 30, 40] total sum(data) print(total)运行后会报错TypeError: unsupported operand type(s) for : int and str这个错误表示列表里的整数和字符串不能直接相加。如果你不确定如何修复可以把报错信息粘贴给 AI并附上说明“请帮我修复这段代码data 列表中可能包含字符串形式的数字我需要安全地计算总和。”AI 可能给出的修复思路是先把所有元素转换为数字再做求和。参考修复如下data [10, 20, 30, 40] total sum(int(i) for i in data) print(total)运行后输出100这个修复能解决问题但要进一步考虑如果列表中有一个元素不是数字比如abc上面的代码依然会报错。如果实验数据不可控更安全的写法是data [10, 20, 30, 40, abc, None] def safe_sum(values): total 0 for v in values: try: total float(v) except (ValueError, TypeError): print(f忽略无法转换的值: {v}) return total print(safe_sum(data))这才是完整可用的工程思路先让 AI 帮你解决眼前报错再根据你对数据的了解补上异常处理和边界检查。4.3 如何向 AI 提问更有效AI 调试的效率很大程度上取决于提问方式。模糊的提问往往得到模糊的回答比如只写一句“我的代码报错了帮我看看”是不太好的提问方式。建议描述问题时包含以下内容你用的 Python 版本以及相关库的版本当前完整的报错堆栈Traceback出错的代码片段最少能复现的代码块你期望的输出结果你尝试过的修改方法。写一个可以参考的提问模板我在 Jupyter Notebook 中运行以下代码时遇到错误。 Python 版本3.10 pandas 版本2.x 代码 df pd.read_csv(data.csv) print(df.groupby(city)[sales].mean()) 报错 KeyError: city 我尝试过检查列名但还是报错。请问可能是什么原因这类提问能快速让 AI 定位到“列名拼写”或“数据文件编码”等常见问题。4.4 AI 调试中的安全边界虽然 AI 工具可以大幅提高效率但必须注意以下几点不要把敏感数据原样粘贴给 AI 工具尤其是涉及账号、密钥、个人隐私的数据不要直接在生产环境运行 AI 生成的代码先在本机的测试环境中跑通AI 生成的代码可能存在误导性 API也就是它会一本正经地编造不存在的函数所以运行后如果出现 AttributeError 或 ModuleNotFoundError不要完全信任 AI 的回答涉及文件删除、数据库变更、系统配置等操作时要人工审核后再执行。AI 是辅助工具最终要对代码正确性负责的是我们自己。5. 完整实战案例数据分析实验与报告导出这一节我们做一个完整的实验读取一个本地 CSV 文件对数据进行清洗和统计并用 matplotlib 绘制图表最后把整个 Notebook 导出为报告。5.1 创建项目结构在本地创建一个实验目录python_exp/ ├── data/ │ └── sales.csv ├── analysis.ipynb └── requirements.txtdata 目录存放需要分析的数据文件analysis.ipynb 是 Jupyter Notebook 文件requirements.txt 用来记录项目依赖。5.2 准备数据在 data/sales.csv 中写入如下示例数据month,product,sales 2025-01,笔记本,120 2025-01,鼠标,85 2025-02,笔记本,150 2025-02,鼠标,90 2025-03,笔记本,110 2025-03,鼠标,95 2025-04,笔记本,170 2025-04,鼠标,88 2025-05,笔记本,165 2025-05,鼠标,120如果你的电脑上还没有这些数据可以用文本编辑器创建该文件注意编码选择 UTF-8否则后面 pandas 读取时可能出现中文乱码。5.3 编写分析代码在 Jupyter Notebook 中按照下面的步骤编写分析过程。第 1 步导入库import pandas as pd import matplotlib.pyplot as plt %matplotlib inline plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False这里设置了 matplotlib 对中文的支持SimHei 是 Windows 常见的黑体字体如果你的系统没有该字体可以换成你系统中支持中文的字体名称比如 “Arial Unicode MS”macOS或 “WenQuanYi Zen Hei”Linux。第 2 步读取数据df pd.read_csv(data/sales.csv, encodingutf-8) print(df.head()) print(df.info())预期输出month product sales 0 2025-01 笔记本 120 1 2025-01 鼠标 85 2 2025-02 笔记本 150 3 2025-02 鼠标 90 4 2025-03 笔记本 110df.info()会显示每一列的数据类型和是否有缺失值这是数据分析里最常用的检查手段之一。第 3 步数据清洗真实实验中的数据往往有缺失或异常先用 pandas 检查print(df.isnull().sum())如果数据集中有缺失值可以通过填充或删除来处理。本文示例数据没有缺失但如果你的数据缺失可以参考下面两种方式# 方式一删除有缺失值的行 df df.dropna() # 方式二用均值填充数值列 df[sales] df[sales].fillna(df[sales].mean())第 4 步分组统计我们希望统计每个月所有产品的总销售额monthly_sales df.groupby(month)[sales].sum().reset_index() print(monthly_sales)输出如下month sales 0 2025-01 205 1 2025-02 240 2 2025-03 205 3 2025-04 258 4 2025-05 285也可以统计每个产品的销售额product_sales df.groupby(product)[sales].sum().reset_index() print(product_sales)第 5 步绘制图表plt.figure(figsize(8, 5)) plt.plot(monthly_sales[month], monthly_sales[sales], markero) plt.title(每月总销售额趋势) plt.xlabel(月份) plt.ylabel(销售额) plt.grid(True) plt.show()如果是统计每个产品的销售额可以用柱状图plt.figure(figsize(8, 5)) plt.bar(product_sales[product], product_sales[sales]) plt.title(各产品总销售额) plt.xlabel(产品) plt.ylabel(销售额) plt.show()图表会直接显示在 Notebook 中这就是%matplotlib inline的作用。第 6 步输出结论在 Markdown 单元格中写下实验结论从统计结果看2025-01 到 2025-05 期间每月总销售额整体呈上升趋势笔记本的销售额高于鼠标。到这一步一个完整的分析型 Notebook 已经完成接下来把它导出为报告。5.4 用 Jupyter 导出报告Jupyter Notebook 自带导出功能菜单路径是 File → Download as。常用格式包括HTML适合在浏览器中直接查看兼容性最好Markdown适合发布到博客或代码仓库PDF适合正式提交报告但需要额外依赖Python (.py)导出为纯脚本。在 Jupyter Lab 中导出方式类似File → Export Notebook As。导出 HTMLHTML 是最稳妥的导出方式直接保存静态网页任何设备浏览器都能打开图片会以内嵌形式保存。导出 Markdown导出的 Markdown 文件里代码单元格会变成代码块图片会以 base64 字符串的形式嵌入或单独保存适合继续二次编辑。导出 PDF如果操作系统是 Windows使用 nbconvert 导出 PDF 需要安装 LaTeX 环境例如 MiKTeX。或者使用另一种方式先导出 HTML再用浏览器打开通过“打印”功能另存为 PDF。这种方式对新手更友好不用折腾 LaTeX 依赖。隐藏代码只保留结果如果实验报告只希望显示结果和结论不想让别人看到代码可以在 Notebook 单元格工具栏中设置单元格属性或者在导出时使用命令jupyter nbconvert --to html --no-input analysis.ipynb--no-input表示不包含代码输入只显示输出内容。5.5 在 Jupyter Lab 中运行 .py 脚本如果你习惯写 .py 脚本也可以在 Jupyter Lab 中打开终端直接运行python analysis.pyJupyter Lab 里自带终端面板点击左侧“”号选择 Terminal 即可。终端会显示当前所在目录如果你想要切换到其他目录可以使用cd命令。Jupyter Lab 终端可以识别当前 Notebook 所在目录建议把项目和 Notebook 文件放在同一目录下减少切换成本。6. 常见问题与排查思路Jupyter 和 Python 环境相关的报错是新手接触最多的坑。下面整理几个高频问题。问题现象常见原因解决思路输入 jupyter 提示“不是内部或外部命令”Python 或 Anaconda 未加入 PATH或者没有安装 Jupyter重新安装 Anaconda如果命令行找不到使用 Anaconda Prompt或者执行python -m pip install jupyterlabWindows Jupyter 打开后浏览器空白浏览器兼容问题或缓存问题换 Chrome/Edge 再试清理浏览器缓存在 Jupyter 配置中更换默认浏览器检查终端是否有报错输出启动后内核一直显示 Connecting内核配置损坏或 IP 地址被防火墙拦截重启 Kernel在菜单栏 Kernel → Restart Kernel重新安装 ipykernelmatplotlib 图表中文显示为方块系统缺少中文字体或未设置字体按上文方式设置plt.rcParams[font.sans-serif]和plt.rcParams[axes.unicode_minus]pandas 读取 CSV 报 UnicodeDecodeError文件编码不是 UTF-8用文本编辑器另存为 UTF-8 编码或在 read_csv 中指定 encoding例如encodinggbk提示缺少某个包例如 ModuleNotFoundError当前环境未安装该包在终端激活当前环境后执行pip install 包名如果是 Jupyter 内核与安装包的环境不一致需要检查当前 Kernel 对应的 Python 路径导出的 PDF 没有图或没有中文LaTeX 环境配置不全或缺少中文字体优先导出 HTML再用浏览器另存为 PDF或安装 MiKTeX / macOS 用户安装 BasicTeX安装中文字体修改代码后还是报同样的错误Jupyter 变量被缓存或没有保存修改点击 Kernel → Restart Run All从头开始重新运行所有单元格确认已保存文件用 AI 生成的代码运行一直报错但不清楚原因可能是 API 版本不同或 AI 生成了不存在的函数检查报错堆栈里第一个错误位置在命令行执行pip show 包名查看版本把完整报错重新扔给 AI 追问除了表格里提到的现象还有两个容易忽略的操作细节Jupyter Notebook 的变量是在内存中持续存在的。如果你先运行了单元格 A再修改单元格 BB 可能依赖 A 中定义的变量。如果删除 A 后直接运行 B就会报 NameError。这时候只需要重新运行 A 即可。不同单元格之间的运行顺序非常重要。建议在实验完成或交接时用菜单中的 Kernel → Restart Run All 把所有单元格按顺序重新执行一次确保不是“靠运气跑通”。7. 最佳实践与工程建议7.1 使用虚拟环境管理依赖每一个实验项目都建议创建独立的虚拟环境。这样可以避免不同项目依赖互相冲突。创建并激活环境后把当前环境依赖导出到 requirements.txtpip freeze requirements.txt下次换设备时只需要在目标机器上执行pip install -r requirements.txt如果你的环境是 Anaconda 的 conda 环境也可以用conda env export导出完整的 yaml 文件。7.2 编写单元格和脚本的规范在 Jupyter 中写代码也要像写正式项目一样规范一个单元格只做一件事方便单独调试变量命名要能表达含义不要用a、b、tmp这类含义不清的变量名单元格顺序要保持可重复执行不要依赖前面单元格的错误结果重要的数据处理步骤用 Markdown 写清说明公共函数可以放到 .py 文件中在 Notebook 中import或%load保持 Notebook 简洁。7.3 异常处理与日志记录在实验代码中不要使用大量print来排查问题。对于关键环节建议用 Python 的 logging 模块import logging logging.basicConfig(levellogging.INFO, format%(asctime)s - %(levelname)s - %(message)s) logger logging.getLogger(__name__) logger.info(开始读取数据) try: df pd.read_csv(data/sales.csv, encodingutf-8) logger.info(f数据读取完成共 {len(df)} 行) except FileNotFoundError: logger.error(文件不存在请检查 data 目录)这样既能记录关键步骤又不会把输出刷得满屏都是。7.4 安全边界建议虽然 Jupyter 常用于本地实验但依然要注意安全不要在 Notebook 中明文保存密码、Token、连接串涉及隐私数据的实验不要直接把数据文件上传到 AI 工具或云端平台从网上下载的代码先逐行阅读再运行不要盲目复制执行如果 Notebook 要与他人分享优先导出为 HTML避免对方直接运行你的未审核代码删除或覆盖文件前先备份到独立目录或者使用版本控制工具管理 Notebook 和代码。7.5 在 VSCode / PyCharm 中使用 Jupyter除了浏览器版的 Jupyter许多 IDE 也支持 Notebook。例如在 VSCode 中安装 Python 扩展后可以直接打开 .ipynb 文件并选择本机的 Python 环境作为内核PyCharm 专业版也内置了 Jupyter 支持。如果你已经习惯 IDE 操作可以不用单独打开浏览器页面。这个习惯有助于把实验代码和正式项目代码放在同一个工程目录里统一管理。8. 总结与学习路线这篇文章的价值在于帮你建立一个完整的 Python 实验闭环从安装 Anaconda 和创建虚拟环境开始认识 Jupyter 的操作习惯和魔法命令再到用 AI 辅助定位代码问题最后把分析过程和可视化结果导出为 HTML、Markdown 或 PDF 报告。这个流程覆盖了课程实验、数据分析和日常脚本验证的大部分场景。如果现阶段你只记住三件事环境先隔离项目用独立虚拟环境代码写完不要急着交用 Restart Run All 重新跑一遍AI 能帮你提高定位问题的速度但最终代码的边界条件和数据安全必须自己把关。下一步可以按下面的路线继续深入学习 pandas 的数据清洗和分组聚合操作能处理更真实的数据集学习 matplotlib 和 seaborn 的图表定制方法让报告里的图更规范、更美观把 Notebook 中的关键代码迁移到 .py 脚本配合函数封装和单元测试形成可维护的项目结构了解如何用 Jupyter Notebook 实现交互式控件例如 ipywidgets让实验结果能被动态调整学习如何在本地部署自己的代码运行环境把实验流程固化下来方便长期使用。如果你在搭建过程中遇到具体的报错可以把问题和完整报错信息记录下来结合 AI 工具分析然后按照上面的排查表逐条核对。多数情况下问题都出在环境路径、编码格式和依赖版本这三个方面。希望这篇指南能让你少走一些弯路把精力放到真正值得研究的实验本身。