You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:25:02