两个环境各装各的
(每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,satisfies(版本, 约束) 判一个版本满不满足「>=1.4,<2」这种约束,split_req 把「httpkit>=1.4」切成名字
共用一个环境会怎样
(每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,satisfies(版本, 约束) 判一个版本满不满足「>=1.4,<2」这种约束,split_req 把「httpkit>=1.4」切成名字
补全:环境里有什么
一个环境就是一个 {包: 版本} 的字典。补全 Env:install(name, ver) 装或覆盖,has(name, spec) 判断装的版本满不满足约束,listing() 交回排好序的「名==版本」串。
补全:把锁装进环境
(每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,satisfies(版本, 约束) 判一个版本满不满足「>=1.4,<2」这种约束,split_req 把「httpkit>=1.4」切成名字
补全:两个环境是否一致
(每道题开头都有同一段:parse_ver 把「1.4.0」变成能比大小的元组,satisfies(版本, 约束) 判一个版本满不满足「>=1.4,<2」这种约束,split_req 把「httpkit>=1.4」切成名字
构建工具解决什么
改了一个源文件,重做的只有它下游的 另一支一动不动 Make、CMake、setuptools 这类工具,共同解决的问题是【0】。
凭什么判断该不该重做
Make 决定「这个目标要不要重新生成」,看的是【0】。
为什么依赖要写全
贯穿 n05 的构建规则(目标 ← 依赖:命令): dist/app.pyz ← build/app.py, build/lib.py : zipapp build -o dist/app.pyz build/app.py ← src/ap
改了一个文件,重做哪几步
改了一个源文件,重做的只有它下游的 另一支一动不动 (RULES 里每个目标记着它的依赖和命令;stale(目标) 判它要不要重做:目标不存在、或任何一个依赖比它新、或依赖自己就要重做;plan(目标) 按依赖先、目标后的顺序列出要重做的目
补全:过期了吗
(RULES 里每个目标记着它的依赖和命令;stale(目标) 判它要不要重做:目标不存在、或任何一个依赖比它新、或依赖自己就要重做;plan(目标) 按依赖先、目标后的顺序列出要重做的目标。) 贯穿 n05 的构建规则(目标 ← 依赖:命