补全:分层
(IMPORTS 记每个模块 import 了谁;deps_of 一路找到全部间接依赖;who_imports 找谁用了它;has_cycle 判有没有循环 import;order 给出「被依赖的先、依赖别人的后」的顺序。) 贯穿 n06
什么会让两次构建不一样
同一份源码、同一份锁,在两台干净机器上各构建一次,产物却不一样。最常见的原因是【0】。
干净环境是什么
「在干净环境里复现」的「干净」指的是【0】。
同样的输入同样的 id
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。) 同一组文件换个顺序、改一个字节,看 id: import hashlib de
补全:把时间戳赶出去
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。) 下面的 make_artifact 把构建时间写进了产物,两次构建 id 不同。补
补全:锁也是输入
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。) (每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,s
补全:两台机器对一对
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。) 两台机器各报了「输入指纹」和「产物指纹」。补全 verdict(a, b):输入不
补全:复现清单
(build_id(files):files 是 {文件名: 内容},按文件名排序后逐个喂给 sha256,交回前 8 位——同样的输入永远同样的 id。) 一份「复现清单」要有四样:python(解释器版本)、requirements、l
真机上第一步做什么
拿到一个别人的 Python 项目(有 requirements.txt),要在一台干净机器上跑起来。第一步是【0】。
从 pip 的安装命令里认出三样东西
真机上装本地仓库的包要敲 pip install --no-index --find-links ~/仓库 -r requirements.txt。先在这里把这条命令切开,看每个选项管什么: cmd = "pip install