Python 现代开发学习笔记

从异常回到第一处状态差异

先读错误名称,再回看产生它的输入

给第二章的 reading_summary.py 输入天数 3,再输入 20、35、很多,程序停在第 7 行,错误的关键部分是:

minutes = int(input())
ValueError: invalid literal for int() with base 10: '很多'

input() 已经读到字符串 "很多",int() 无法把它转换成整数,因此这一轮还没更新累计值。前两条时长得到 total=55、达标一天、最长 35;看到错误后,先保留原输入,再将第三条改成 45,从程序开头重新运行。总量应为 100,达标两天,最长 45。

分别处理 20、35 和无法转换的文本,标出停在转换语句的位置,修正后重新运行三条记录得到 100

到了采集、Web 和模型项目,仍按这个顺序追踪:保留失败输入或请求,记录启动命令与配置,再从最接近业务代码的调用处查看。转换、文件、数据库和接口错误可能连续传播,修正第一处错误后再重跑同一份输入。

分开核对解释器、包与启动目录

终端中能找到 python,编辑器也能显示 .venv,还需要继续核对它们是否指向同一份解释器。遇到 ModuleNotFoundError,先打印当前解释器和导入位置。

# 在 crawler_project 中检查解释器、已安装版本和实际导入文件。
uv run python -c "import sys; print(sys.executable)"
uv pip list
uv run python -c "import httpx; print(httpx.__version__); print(httpx.__file__)"

pip 路线对应执行 .venv/Scripts/python.exe -m pip show httpx,再用同一解释器导入。包列表和导入位置都落在当前项目环境,才说明这次请求使用的是刚才检查的依赖。

比较系统解释器与项目 .venv,先查解释器位置,再查包和导入路径,最后让编辑器与终端使用同一环境

笔记正文与全部题解 · Ctrl / ⌘ K