Python操作venv后导入bs4/requests报ModuleNotFoundError如何解决
问题根因
故障由两个核心问题共同导致,和项目存放在父子文件夹无直接关联:
- 重命名venv文件夹的操作破坏了虚拟环境的路径绑定:Python原生venv创建时会在内部配置文件中写入绝对路径,移动、重命名venv文件夹都会导致环境失效,哪怕改回原名称,路径配置损坏后也无法正常读取环境内安装的依赖
- 执行pip命令时调用的解释器,和运行项目时调用的解释器不匹配:你当前执行的pip对应全局Python环境,而运行项目时调用的是损坏的虚拟环境解释器,因此会出现pip提示依赖已存在、运行时却报模块找不到的错误
- 找不到AppData文件夹是因为Windows系统默认将该文件夹设为隐藏状态,不是路径不存在。
修复步骤
全程在Windows PowerShell中操作,不需要使用sudo命令(该命令仅适用于Linux/macOS系统,Windows环境无此命令)。
1. 清理损坏的虚拟环境
分别进入两个项目的根目录,删除里面所有已损坏的venv、venv1文件夹,不要复用之前移动、重命名过的虚拟环境文件。
2. 为每个项目重建独立虚拟环境
两个项目不要共用同一个虚拟环境,分别操作:
- 打开PowerShell,执行
cd 你的项目根目录绝对路径进入目标项目文件夹 - 执行命令新建虚拟环境:
python -m venv venv - 执行命令激活虚拟环境:
.\venv\Scripts\Activate.ps1如果激活时抛出权限错误,先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,输入Y确认权限策略修改后,重新执行激活命令即可 - 激活成功后,PowerShell输入行的最前方会显示
(venv)标识,此时执行依赖安装命令:pip install requests pip install beautifulsoup4 - 安装完成后,在当前已激活虚拟环境的终端中运行项目入口文件,验证导入是否正常。
3. 固定编辑器的解释器配置(避免后续复现)
如果你使用VS Code、PyCharm等编辑器编写代码,打开项目后手动指定对应项目venv内的解释器,避免编辑器自动选到全局Python或其他无效解释器:
- VS Code:点击窗口右下角的Python版本标识,在弹出的列表中选择当前项目下
./venv/Scripts/python.exe - PyCharm:打开
Settings > Project > Python Interpreter,选择添加现有虚拟环境,选中当前项目venv目录下的python.exe即可
注意:后续安装依赖、运行项目前,先确认终端已激活对应项目的虚拟环境(行首有(venv)标识),不要直接在未激活虚拟环境的终端中用全局pip装包,否则会再次出现依赖不匹配的问题。
补充说明
如果需要查看AppData文件夹,打开文件资源管理器,在顶部「查看」选项卡中勾选「隐藏的项目」选项,即可看到该目录。
内容的提问来源于stack exchange,提问作者TheAlmostGreat
相关产品推荐
相关产品推荐

