新建的 venv 里 pip list 只有三个包,import requests 却成功,版本和系统 Python 里的一致。照 requirements 装完还是能导到系统那份。日志里能对上时间点,这种反而好排。
创建环境时带了 --system-site-packages,或者 pyvenv.cfg 里 include-system-site-packages 是 true。venv 的 site-packages 排在系统之后,本地没装就从系统拿。这一点先确认清楚,后面就不用反复试。
cat .venv/pyvenv.cfg python -m venv --without-system-site-packages .venv
这次卡住的地方就在「system-site-packages」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。
处理上按这个顺序:打开 pyvenv.cfg 看 include-system-site-packages 这一行;是 true 就用 --without-system-site-packages 重建环境;临时验证可以加 -S 启动 但它会影响其他路径 别当常规做法;重建后 pip list 和 import 的结果要能对得上。
结果对不对很好判断,pyvenv.cfg 里是 false 系统里装过的包在 venv 里 import 会报 ModuleNotFoundError。
