You need to enable JavaScript to run this app. Linux环境运行Python脚本报依赖已满足却缺失requests模块的ImportError
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境运行Python脚本报依赖已满足却缺失requests模块的ImportError

ImportError: No module named requests 问题解决指南

核心根因

当前环境存在Python版本绑定错位问题:

  • 系统默认python命令指向Python 2.7.17,但所有pip操作绑定Python 3.6.9,安装的requests库路径属于Python3的site-packages目录
  • 脚本自带的#!/usr/bin/env python shebang会优先匹配到Python2解释器,运行时无法读取Python3路径下安装的第三方库
  • 虚拟环境未激活状态下执行脚本,不会加载虚拟环境内安装的依赖

分步修复操作

  • 修正脚本解释器指向
    将脚本头部的shebang从#!/usr/bin/env python替换为明确匹配Python3的配置:
    #!/usr/bin/env python3
    
    避免使用泛化的python匹配规则,防止定位到Python2解释器
  • 绑定解释器安装依赖
    不要直接执行pip install安装,要和目标运行解释器绑定安装,从根源避免pip可见但解释器找不到的问题:
    # 对应Python3.6解释器安装requests
    python3 -m pip install requests
    
    执行后验证模块关联状态:
    python3 -c "import requests; print(requests.__version__)"
    
    输出2.25.1即说明模块关联正常。
  • 虚拟环境场景操作
    如果使用虚拟环境运行脚本,必须先激活虚拟环境再执行,不可全局直接运行脚本:
    # 激活虚拟环境
    source ./venv/bin/activate
    # 验证虚拟环境内依赖状态
    pip list | grep requests
    # 执行脚本
    ./tele.py
    
  • 排除异常干扰项
    • 放弃使用import urllib3.requests的导入方式:requests是独立顶级模块,不属于urllib3的子模块
    • 检查脚本所在目录是否存在同名requests.py文件,避免本地文件拦截正常导入逻辑
    • 无需激活虚拟环境时,可直接指定虚拟环境内的Python解释器全路径执行脚本:
      /path/to/venv/bin/python ./tele.py
      

高频踩坑提示

  • 执行python -V和pip -V时,必须核对两边绑定的Python版本号完全一致,版本不匹配是pip list能看到库但解释器导入报错的最常见原因
  • Python2和Python3的第三方库路径完全隔离:Python2库路径为/usr/lib/python2.7/dist-packages,Python3库路径为/home/xxx/.local/lib/python3.6/site-packages,两套环境的依赖无法互通

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 22:45:03