一条 pip install 命令装到一半报 ResolutionImpossible,提示两个包对同一个依赖的版本要求无法同时满足。日志里能对上时间点,这种反而好排。
多个包对同一依赖的版本区间没有交集,新版解析器会回溯所有组合,试完仍无解,就把整棵依赖树和冲突点打出来。这一点先确认清楚,后面就不用反复试。
pip install 'pkgA<2' 'pkgB>=1.4' pip install --upgrade --upgrade-strategy only-if-needed pkgA pip check
「pip 依赖冲突」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:按报错里的包名逐个单独安装,看哪个先卡住;放宽上层包的版本,别把依赖钉死在某一个小版本;约束分散在多处时,用约束文件统一锁住范围。
结果对不对很好判断,pip check 不再报冲突,实际版本与预期一致。
