用途:为多服务或 monorepo 的 Python 后端提供依赖与环境管理规范,覆盖新增、升级、移除 Python 包,以及响应 Dependabot 与安全告警。
主要能力:采用分层依赖结构。Tier 1 为核心共享基线(requirements-core.in,如 fastapi、pydantic、httpx);Tier 2 为服务专属依赖(各服务目录下的 requirements.in);Tier 3 为开发工具(requirements-dev.in,如 pytest、black、ruff),不进入生产容器。每个服务拥有独立的 requirements.txt 锁文件,服务 .in 文件通常以 -r ../../requirements-core.in 继承核心依赖。
使用方式:新增或升级包时,先在正确的 .in 文件声明版本约束(安全下限用 >= 语法,如 cryptography>=46.0.5),再用 pip-compile 编译锁文件,例如 pip-compile src/requirements-core.in --output-file src/requirements-core.txt,服务级同理。本地验证优先用 pip-sync,回退用 pip install -r。随后重建受影响的容器确认构建稳定,并将 .in 与 .txt 成对提交。响应安全告警时,判断包是直接依赖还是传递依赖,直接依赖提升 .in 中的版本下限,传递依赖则在合适的 .in 中加版本下限强制解析器拉取修复版本;核心变更需按核心优先、再逐服务的顺序重新编译所有受影响锁文件,并用 grep 验证补丁版本已出现。
限制与规则:Dockerfile 只允许 COPY requirements.txt 加 RUN pip install -r requirements.txt,禁止 RUN pip install <pkg> 或手动安装,且需先复制 requirements.txt 再复制源码以保留层缓存。代理不得直接 pip install 解决依赖、不得手改 .txt 锁文件、不得绕过 pip-compile 失败或忽略缺失工具、不得在冲突未解决时继续;出现上述情况须立即停止并报告。遇到摩擦、失败或变通须按自进化要求分类记录,未修复则记入 map-debt.md。常见陷阱包括核心变更后忘记重编译下游服务、安全下限误用 == 而非 >=、把开发工具写入生产 .in、只提交 .txt 不提交 .in。该技能仅需 Python 3.8+ 与标准库,无外部依赖。