故障表现

命令行提示符已经显示虚拟环境名,执行 pip install 后全局环境里也能 import 到,项目依赖互相污染。

问题出在哪

pip 命令解析到了系统目录下的可执行文件,或者 PATH 顺序里虚拟环境的 Scripts 不在最前。判断时先分清是 venv pip 装到全局 本身的配置问题,还是上游调用、运行环境带进来的差异;前者改配置就能收口,后者要沿着请求链路一层层往上找,处理顺序不能颠倒。先在出问题的机器上复现一次,把报错原文和发生时间记下来,再对着日志定位。

按这个顺序处理

  1. 用 python -m pip 绑定解释器
  2. 确认 pip 指向的路径
  3. 在虚拟环境里查 sys.prefix 是否与预期一致

对应的命令或配置片段如下,可直接复制:

python -c "import sys; print(sys.prefix); print(sys.executable)"
python -m pip -V
python -m pip install requests

不要一次改多个参数,每次只动一处并记录下来,否则现象变了也说不清是哪个改动起的作用。改完只在一台机器上验证不够,至少从外网和移动网络各试一次,才能确认不是本地缓存造成的假象。

怎么确认改好了

pip -V 显示的路径位于虚拟环境目录内,安装的包只在当前环境可见。

作者 9823189