谁被两边拉扯
场景:~/项目/requirements.txt 只有两行,每一行单独都装得上,两行一起装就报冲突。~/仓库/索引.txt 有每个版本的依赖。对照表列了八个包名。 任务:找出被两边拉扯的那个包(没有任何版本能同时满足所有约束的),到对照表里
改约束让它们共存
场景:~/项目/requirements.txt 只有两行,两行一起装会冲突。 任务:改这两行的版本约束(放宽或换一个版本),让它们能在 ~/仓库 里一起装上——两个包都要保留在清单里,不能删行。改好之后运行 ~/check(它会用真的 p
仓库里缺了谁
场景:~/项目/requirements.txt 只有一行,可是从 ~/仓库 装它会失败——它需要的某个包,仓库里一个版本都没有。对照表列了八个包名。 任务:找出仓库里缺的那个包,到对照表里查它对应的标记。 可操作范围:只在分给你的这台实验
锁住的版本太旧
场景:~/项目/工具.py 调用了 httpkit.fetch_json;说明里写了这个函数是从哪个版本起才有的。~/项目/requirements.lock 是现在的锁文件,照它装出来跑会报 AttributeError。对照表列了八行「
两台机器的锁差在哪
场景:~/锁A.txt 和 ~/锁B.txt 是两台机器各自 pip freeze 的结果。同一份代码在 A 上好的、在 B 上坏了。对照表列了八个包名。 任务:找出两份锁里「都有、但版本不一样」的那个包,到对照表里查它对应的标记。(只在
同名文件遮住了包
场景:在 ~/项目 下跑 python3 工具.py,报的不是「找不到模块」而是 AttributeError——import 到的根本不是仓库里的那个包。对照表列了八个文件名。 任务:找出是哪个文件冒充了那个包,到对照表里查它对应的标记。
把过期的锁重新生成
场景:~/项目/requirements.txt 改过了,~/项目/requirements.lock 还是改之前生成的——锁过期了。 任务:按现在的清单重新生成锁文件(在 venv 里从 ~/仓库 装一遍再 freeze,或者读索引自己推
交付:一个解析器
场景:~/仓库/索引.txt 每行「包 版本 依赖…」。 任务:写一个 ~/项目/检查.py,用法 python3 检查.py 清单文件,不用 pip、只读索引,打印这份清单会装上什么:每个包一行「包名 空格 版本」,按包名排序,含间接依赖
CI 是什么
一次改动,自动把检查一串跑一遍 build、test、lint 依次亮绿 持续集成(CI)最核心的一句话是:【0】。
为什么要 CI
团队为什么要搭 CI?主要是为了【0】。