常见报错与回查位置
下表从看到的现象进入。先执行中间一列的观察,再回查相应章节,不急着同时改动多处配置。
| 现象 | 先观察的对象与动作 | 回查位置 |
|---|---|---|
找不到 python 或 py -3.12 |
查看已安装解释器与启动器,回到环境教程选择 3.12 | 序言、第一章环境准备 |
ModuleNotFoundError |
打印 sys.executable 与包路径,在当前项目重新安装或同步 |
第一章环境、第三章包、第六章项目安装 |
attempted relative import |
观察是否直接启动了包内文件,改从包的上一级使用 python -m 包名 |
第三章模块与包入口 |
FileNotFoundError |
查看启动目录与解析后的完整路径,核对相对路径从哪里开始 | 第五章路径、第十七章配置 |
ValueError 或拆包数量错误 |
保存原输入,逐步查看 split、转换和接收项数 |
第二章输入与拆包 |
TypeError、AttributeError |
查看实际对象类型、调用参数与属性所在对象 | 第三章参数、第四章对象与属性 |
UnicodeDecodeError、坏 JSON 或 CSV |
确认文件来源与编码,再查看第一条失败记录和原文件 | 第五章文本、结构化数据与异常 |
SQLite no such table |
查看实际数据库路径与结构版本,执行该项目的初始化或迁移 | 第五章数据库、第十五、十七章迁移 |
SQLite database is locked |
查看哪个事务仍在等待,检查提交、回退和连接关闭 | 第五章事务、第六章资源测试、第十七章整批写入 |
| 网络连接失败 | 看来源或服务终端是否已启动,再比较主机、端口和请求地址 | 第八、九章本地服务与 HTTP |
| HTTP 超时 | 区分连接、读取、写入和池等待,核对本次失败时刻 | 第八章超时、第九章重试与任务恢复 |
| 404、405、422 | 分别核对路径、HTTP 方法、字段位置与响应正文 | 第十二、十三章路由与校验 |
| 401、403 | 查看登录身份、令牌或 Cookie,再核对记录归属 | 第十二至十五章身份与权限 |
| 浏览器报告 CORS | 在开发者工具中查看请求来源、预检和响应头 | 第十二章跨源,第十三章独立前端 |
| 模板列表看起来像方法 | 检查取的是字典键还是对象方法,例如 result['items'] |
第十四章 Jinja,第十七章查询模板 |
| Pygame 移动随帧率改变 | 比较实际经过时间、逻辑步数和每步位移 | 第十章时间、固定逻辑步与碰撞 |
| NumPy 广播失败或结果多一维 | 逐项写出输入 shape,画参与运算的行列 | 第十一章广播,第十六章损失形状 |
| 数组修改影响另一变量 | 查看是否共享内存、切片得到视图还是拷贝 | 第二章对象绑定、第十一章视图 |
| PyTorch 类型或设备不一致 | 查看批次、参数的 dtype 和 device,在相乘前比较 | 第十六章 Tensor、设备与模型 |
| 训练损失出现 NaN | 从输入、标准化结果、前向输出到损失逐项查看 | 第十一章预处理,第十六章训练排错 |
| 重新加载后预测不同 | 核对权重、缩放、特征次序、eval() 与实际版本 |
第十六章检查点,第十七章模型交付 |
| 模型清单摘要不一致 | 对照整版目录的文件,重新取得同一份完整版本再校验 | 第十七章完整版本、发布与恢复 |
| 回答 JSON 解析失败或引用检查报错 | 分别查看字段、块编号和引用原文,保留这轮问题与检索结果 | 第十八章消息链与引用检查 |
| 恢复时找不到任务或没有待确认项 | 核对身份、数据目录、thread_id 和当前 pending,不重新提交另一份问题代替恢复 | 第十八章检查点与确认 |
| 端口已被占用 | 找到先前启动的服务终端,结束或给新服务选另一端口 | 第十二章服务器,第十七章进程 |
第十六、十七章的两个回归项目使用不同的划分过程,保存的模型各有自己的统计量与权重。核对重载结果时,比较同一个检查点或同一个版本;跨实验比较则先固定数据划分和评价方式。