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

Conda已装requests但导入报ModuleNotFoundError的解决方法

问题背景

已成功激活名为env1的conda虚拟环境,执行conda list可见已安装PyPI源的2.28.0版本requests库,但进入Python交互环境执行import requests时触发如下报错:

ModuleNotFoundError: No module named 'requests'

相关conda列表片段、终端状态如下:

qtconsole                 5.3.0              pyhd3eb1b0_0
qtpy                      2.0.1              pyhd3eb1b0_0
readline                  8.1.2                h7f8727e_1
regex                     2022.6.2                 pypi_0    pypi
requests                  2.28.0                   pypi_0    pypi
responses                 0.18.0                   pypi_0    pypi
rouge-score               0.0.4                    pypi_0    pypi
send2trash                1.8.0              pyhd3eb1b0_1
(env1) june@vgpu1:~$
排查流程
  • 先核对当前Python解释器是不是属于env1环境
    进入报错的Python交互终端,执行以下代码:
    import sys
    print(sys.executable)
    
    正常输出的路径必须包含envs/env1/片段,如果输出是系统全局Python路径、或者其他虚拟环境的路径,就算终端前缀显示(env1),实际跑代码的解释器也不对,一般是shell里配了python别名、或者环境变量优先级错乱导致的。
  • 再核对requests的实际安装位置
    保持env1激活状态,在终端执行:
    pip show requests
    
    看返回结果里的Location字段,正常路径应该落在env1环境的site-packages目录下,如果路径指向别的环境,说明之前装requests的时候,调用的pip根本不是env1环境的,conda list能扫到是因为conda会索引全局包缓存,不代表包装在当前环境里。
  • 最后核对Python的包搜索路径
    回到Python交互终端执行:
    import sys
    print('\n'.join(sys.path))
    
    逐行看输出的路径里,有没有上一步查到的requests安装目录,如果没有,就算包真的存在,Python也搜不到这个包。
解决方法
  • 针对解释器不匹配的情况
    先检查shell配置文件(~/.bashrc、~/.zshrc这类)里有没有手动给python、pip命令加别名,有的话删掉对应配置,重启终端再重新激活env1。如果还是不对,可以直接在激活env1后执行conda install python,重新在env1里装一遍对应版本的Python,自动修复路径关联。
  • 针对包装错位置的情况
    激活env1之后,不要直接用pip install命令,用当前环境的Python主动调用pip来强制重装,从根源避免pip和Python版本不对应:
    python -m pip install requests==2.28.0 --force-reinstall
    
  • 针对包搜索路径缺失的情况
    直接执行上面的强制重装命令就行,重装过程会自动把包的路径注册到当前环境的Python搜索路径里,不需要手动改配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:09:18