Python 已安装包却提示 ModuleNotFoundError?Windows 环境错配排查实测

本站复现实验 · Windows 11(系统构建 26200)· CPython 3.11.9 64 位 · requests 2.32.5 · 测试日期:2026-10-28

刚执行完 pip install requests,看到了安装成功,运行代码却仍然提示 ModuleNotFoundError: No module named 'requests'。这时先检查装包和运行代码用的是不是同一个 Python,不要急着卸载或重装整套软件。

本文解决的具体情况:包安装在环境 A,代码却在环境 B 中运行。我们用两个独立虚拟环境实际复现了这个问题,再把包装入运行代码的环境,验证导入成功。其他同名报错仍要结合完整错误判断。

下方四张图片是本机实际执行输出保存为日志后,在 VS Code 中打开的原始窗口截图;不是原生终端操作截图,也不是客户案例。日志中的 RUN 表示执行的子进程命令,文中的代码块提供 PowerShell 写法。

1. 在报错的运行入口中,先打印 Python 路径

把下面两行放在报错脚本最上面、第三方库的 import 之前,再用原来会报错的方式运行。用运行按钮报错,就用同一个按钮检查;不要只在另一个终端里检查。

import sys
print(sys.executable)

记下实际输出的 python.exe 完整路径。接着在 PowerShell 用这个解释器检查包。下面的路径只是占位示例,必须替换为你刚打印出来的路径;前面的 & 和引号要保留。

& "C:\你的项目\.venv\Scripts\python.exe" -m pip show requests

如果显示 Package(s) not found: requests,说明这个解释器对应的安装环境中没有找到 requests 的安装记录。若你之前的安装命令提示成功,就要继续核对当时使用的解释器,而不是凭终端提示符判断。

python -m pip 的作用是让指定的 Python 执行 pip。关键在于前面的 Python 必须正确;随意换成另一个 python 或 py 命令,并不能自动修复解释器错配。

2. 实际复现:A 环境已安装,项目环境仍然报错

为了说明原因,本次实验在一个空测试文件夹中创建了 .venv-a 和 .venv-app 两个独立环境。这些名称只是实验标记,不要求你的现有项目照搬创建。

python -m venv .venv-a
python -m venv .venv-app
.\.venv-a\Scripts\python.exe -m pip install requests==2.32.5
.\.venv-a\Scripts\python.exe -c "import requests; print(requests.__version__)"
.\.venv-app\Scripts\python.exe -c "import requests"

最后一条命令出现下面的错误,而 A 环境输出版本号 2.32.5。同一台电脑上的两个虚拟环境,默认不会共用已安装的第三方包。

ModuleNotFoundError: No module named 'requests'
真实复现日志:A环境成功导入requests,项目环境提示ModuleNotFoundError
图 1:A 环境导入成功,项目环境导入失败,失败进程退出码为 1。 点击图片可查看原图。

3. 对照解释器和模块位置,确认错配

本次实验继续打印两个解释器的相对路径,并检查 requests 的模块位置。下图的路径都相对于实验文件夹;排查你自己的项目时,以第 1 步得到的完整路径为准。

真实环境对比日志:requests位于venv-a,venv-app的模块查询为None
图 2:requests 位于 .venv-a 的 site-packages;.venv-app 查询 requests 的结果为 None。 点击图片可查看原图。
检查项实验环境 A项目环境
Python 路径.venv-a\Scripts\python.exe.venv-app\Scripts\python.exe
requests可导入,版本 2.32.5修复前不可导入
说明安装发生在这里报错的代码从这里运行

如果你的安装环境和运行环境确实不同,有两种处理方向:把运行入口切换到项目本来应使用的环境,或者把项目所需依赖安装到正确的运行环境。先看项目说明、课程要求或已有依赖文件,避免把所有包装入全局 Python。

4. 把包安装到实际运行代码的 Python

本次实验确认 .venv-app 就是项目需要使用的环境,因此直接调用它的解释器安装。为方便复现实验,这里固定 requests 为 2.32.5;这只是本文测试版本,不表示所有项目都应使用这个版本。

.\.venv-app\Scripts\python.exe -m pip install requests==2.32.5

你的实际项目如果提供了 requirements.txt,应先阅读项目的版本要求,再从项目目录用正确解释器安装依赖。例如:

& "C:\你的项目\.venv\Scripts\python.exe" -m pip install -r requirements.txt

没有依赖文件且确实只缺 requests 时,再使用正确解释器安装该包;不要把示例中的路径或包名原样套用于其他项目。本实验为避免个人 pip 配置干扰,执行时另加 --isolated 并明确使用 PyPI;普通项目无需为了这篇教程修改自己的镜像或代理设置。

真实安装过程日志:使用项目环境python执行pip安装requests
图 3:通过 .venv-app 的 python.exe 执行安装,下载日志来自实际执行过程。 点击图片可查看原图。

这里没有激活虚拟环境,而是直接调用环境中的 python.exe。这样也能操作对应环境,不需要为了本次排错去修改 PowerShell 执行策略。

5. 验证导入成功,再运行原来的脚本

.\.venv-app\Scripts\python.exe -c "import requests; print(requests.__version__); print(requests.__file__)"
.\.venv-app\Scripts\python.exe -m pip check

本次实际结果是:项目环境成功导入 requests,模块来自 .venv-app\Lib\site-packages,导入进程退出码为 0;pip check 输出 No broken requirements found.。

真实修复结果:项目环境导入requests成功并通过pip check
图 4:同一个项目环境导入成功,并通过已安装包的依赖一致性检查。 点击图片可查看原图。

最后还要用原来的运行入口重跑你的脚本。若终端已经成功、编辑器运行按钮仍失败,再次在脚本顶部打印 sys.executable,核对按钮实际调用的环境。本文截图展示的是日志文件,不代表已经验证过你的 VS Code 工作区设置。

pip check 通过只说明已安装分发包的依赖关系没有报告冲突,不代表业务代码、网络请求或整个项目都已验证。本实验验证到 requests 导入成功,没有发起外部 HTTP 请求。

6. 仍然报错?先看属于哪一种情况

  • 错误里缺的是另一个模块:保留完整 traceback,确认实际缺失对象,不要一直重复安装 requests。
  • 运行环境相同,包也存在:检查项目文件名、模块位置以及具体导入语句;安装名称和导入名称也可能不同,需要查对应项目文档。
  • 安装本身失败:下载超时、证书报错、权限问题与本篇的环境错配不是同一问题。先处理安装日志中的具体错误。
  • 在 Notebook、远程主机、WSL 或容器中运行:应在真正报错的内核或运行环境中打印解释器信息。本次 Windows venv 实验不能当作这些环境已实测通过的证据。
  • 只能在当前终端成功:保留解释器完整路径,再回到原来失败的入口核对;终端名称、文件夹名称或“安装成功”的一行提示都不足以证明环境一致。

常见疑问

要不要重装 Python 或 VS Code?

本次实验不需要重装,只需把依赖安装到正确环境。先确认错配原因,再决定是否调整已有安装;不要为了消除一条报错删除仍被其他项目使用的环境。

看到 Requirement already satisfied 为什么仍会失败?

它说明执行该次 pip 检查的安装环境已经满足相应要求,仍需核对运行代码的解释器是不是同一个。用第 1 步的路径和对应 -m pip 命令检查。

可以直接复制本文所有命令吗?

只有在空的测试文件夹中复现实验时,才使用两个实验环境名称。处理现有项目时,请替换为实际解释器路径和项目要求的依赖,先确认环境用途。

还是分不清环境?可以先发截图咨询

请发送 Windows 版本、完整报错、脚本顶部打印的 Python 路径,以及你实际执行的安装命令。发图前遮住账号、密钥等个人信息,不要发送密码或验证码。

我们先确认能否处理、具体范围与费用,再预约远程协助;已有项目排错需单独评估,不自动包含在基础安装套餐中。

发送报错截图咨询查看 Python+VS Code 配置服务

如果只是从零安装基础环境,也可查看 Python 基础安装服务。先咨询后报价,售后范围以服务页与双方约定为准。

实验说明与参考资料

复现方式:两个默认隔离的 venv;A 安装 requests,APP 首次导入失败;APP 安装后再次导入成功。测试使用 Python 3.11.9 与 requests 2.32.5,具体输出以文内实图为准。本文不承诺解决所有 ModuleNotFoundError。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部