You need to enable JavaScript to run this app. Linux运行Python脚本报缺少requests模块,pip却提示已安装的异常
优惠活动
大模型
产品
解决方案
定价
更多

Linux运行Python脚本报缺少requests模块,pip却提示已安装的异常

问题根因定位

你遇到的pip显示已安装、但脚本导入失败的核心矛盾是:执行脚本用的Python解释器,和pip绑定安装包的Python解释器并非同一版本,二者的模块搜索路径完全独立。
具体对应到你的报错场景:

  • 你执行python 47138.py时启动的是Python 2.x版本解释器(Debian/Ubuntu系Linux默认的命令别名规则),这个解释器的模块搜索路径里压根不包含pip3装包的目录,你可以通过执行which python、which pip3两个命令验证路径差异,大概率会看到两个命令对应的路径完全分属Python2和Python3的不同安装目录。
  • 你执行pip3 install requests时,pip3本身是和Python 3.x绑定的工具,安装的requests包存放在/usr/lib/python3/dist-packages路径下,这个路径只有Python3解释器会去检索。
  • 你尝试卸载时看到的权限提示,是因为/usr/lib/python3/dist-packages是系统级受保护目录,存放的是发行版预装给系统Python3的依赖包,普通用户权限下无法对这个路径的文件做修改删除,这是系统的常规保护机制,不是异常。
    • 注意:完全不需要尝试卸载系统路径下的预装requests包,这类包是Linux发行版为自身系统工具配套安装的依赖,随意卸载反而可能导致系统自带的Python脚本运行异常。
可直接落地的解决方法

按照你实际的运行需求选对应方案即可:

  • 如果你本来就需要用Python3运行这个脚本
    • 直接替换脚本启动命令,不要用python,改用和装包路径匹配的解释器启动:python3 47138.py,正常情况下可以直接识别到系统预装的requests模块,无需额外安装。
    • 如果替换命令后依然提示导入失败,用绑定解释器的pip命令补装到用户目录下,绕开系统目录权限限制:python3 -m pip install --user requests,这个命令会把requests安装到当前用户的Python3专属模块路径下,不会改动系统目录的预装包。
  • 如果你确实需要用当前指向Python2的python命令运行脚本
    • 先给当前Python2解释器配置对应的pip工具,再通过解释器绑定的方式安装依赖,保证包装到Python2的搜索路径下:python -m pip install requests,装完后再运行脚本即可正常导入。
  • 通用校验方法
    装完依赖后先做单行验证,确认目标解释器可以正常加载requests:
    • 对应Python3环境执行:python3 -c "import requests; print('模块加载成功,版本号:', requests.__version__)"
    • 对应Python2环境执行:python -c "import requests; print('模块加载成功,版本号:', requests.__version__)"
      只要命令能正常输出版本号,后续运行脚本就不会再出现导入报错。

内容的提问来源于stack exchange,提问作者Rishabh Nigam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 19:06:03