从异常回到第一处状态差异
先读错误名称,再回看产生它的输入
给第二章的 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。
到了采集、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,再用同一解释器导入。包列表和导入位置都落在当前项目环境,才说明这次请求使用的是刚才检查的依赖。