VSCode中Python无sudo运行报ModuleNotFoundError:找不到requests模块
问题分析与解决
核心问题
- 已创建virtualenv隔离环境,VSCode内指定Python3.10解释器,但运行
import requests时触发ModuleNotFoundError - 普通用户执行
python3 test.py报错,sudo执行则正常 - 对比发现普通用户与sudo的
python3实际指向Python3.11,且模块搜索路径不一致,虚拟环境未被正确激活
解决步骤
1. 确认VSCode已关联正确的虚拟环境
- 点击VSCode左下角显示当前解释器版本的区域,打开解释器选择列表
- 找到你创建的Python3.10虚拟环境(路径通常为
/home/jbrookley/sparrow/bin/python)并选中 - 重启VSCode终端,确认终端开头显示虚拟环境名称(如
(sparrow)),说明环境已激活
2. 在虚拟环境内安装依赖
虚拟环境激活后,直接用pip安装requests(无需加sudo或版本后缀):
pip install requests
3. 修正系统默认Python版本指向
如果系统默认python3为3.11,可通过update-alternatives切换到3.10:
# 查看已有Python替代项 update-alternatives --list python # 若未添加Python3.10,执行以下命令添加 update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1 # 手动选择默认Python版本 update-alternatives --config python3
在弹出的选项中选择对应Python3.10的编号即可。
4. 验证模块搜索路径
激活虚拟环境后,执行以下命令确认路径包含虚拟环境的site-packages:
python -c "import sys; print(sys.path)"
输出应包含类似/home/jbrookley/sparrow/lib/python3.10/site-packages的路径,而非Python3.11的路径。
关键原因说明
- 普通用户的
python3默认指向3.11,且你创建的虚拟环境可能基于3.11版本,而非预期的3.10 - sudo执行时会忽略用户的虚拟环境配置,直接调用系统全局Python3.11,而全局环境已安装requests
- VSCode若未正确选中目标虚拟环境,会使用系统默认Python版本,导致版本与依赖路径不匹配
内容的提问来源于stack exchange,提问作者J B
相关产品推荐
相关产品推荐

