Conda环境中已安装pip但执行pip install -r requirements.txt时仍报No module named 'pip'错误
问题背景
我刚上手Anaconda,克隆了THU-MIG的yoloe仓库后,激活了名为yoloe的Conda环境(Python 3.10,环境路径在D:\ProgramData\anaconda3\envs\yoloe),执行pip install -r requirements.txt时卡在了安装third_party/lvis-api的步骤,报错提示ModuleNotFoundError: No module named 'pip',但明明pip list显示pip已经安装在当前环境中。
错误详情
执行安装命令后的核心错误日志:
Obtaining file:///D:/code/yoloe/third_party/lvis-api (from -r requirements.txt (line 2)) Installing build dependencies ... done Checking if build backend supports build_editable ... done Getting requirements to build editable ... error error: subprocess-exited-with-error × Getting requirements to build editable did not run successfully. │ exit code: 1 ╰─> [19 lines of output] Traceback (most recent call last): File "D:\ProgramData\anaconda3\envs\yoloe\lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 389, in <module> main() ... File "<string>", line 10, in <module> ModuleNotFoundError: No module named 'pip' [end of output]
已排查信息
- 当前环境的pip状态:
Package Version ---------- ------- packaging 25.0 pip 26.0.1 setuptools 80.10.2 wheel 0.46.3
.condarc配置:
channels: - defaults show_channel_urls: true envs_dirs: - D:\ProgramData\anaconda3\envs pkgs_dirs: - D:\ProgramData\anaconda3\pkgs
- 已将Anaconda相关路径加入系统PATH:
D:\ProgramData\anaconda3D:\ProgramData\anaconda3\ScriptsD:\ProgramData\anaconda3\Library\binD:\ProgramData\anaconda3\Library\mingw-w64\bin
- 尝试过Python 3.13的新环境,问题依旧;执行
python -m ensurepip也无法解决。
解决方案
这个问题的核心是pip在构建隔离环境(build isolation)中缺少pip依赖——lvis-api的setup.py代码中直接导入了pip模块,但pip默认的构建隔离环境只包含setuptools和wheel,没有pip。以下是几个可行的解决步骤:
方案1:升级当前环境的pip和setuptools到兼容版本
先确保pip、setuptools和wheel是最新兼容的版本,避免版本不兼容导致的隔离环境异常:
pip install --upgrade pip setuptools wheel
升级完成后,再次执行:
pip install -r requirements.txt
方案2:禁用构建隔离单独安装lvis-api
针对lvis-api的安装,直接禁用pip的构建隔离模式,让它使用当前环境的依赖来构建:
pip install -e D:\code\yoloe\third_party\lvis-api --no-build-isolation
安装完成lvis-api后,再回到仓库根目录执行完整的requirements安装:
cd D:\code\yoloe pip install -r requirements.txt
方案3:创建全新的干净Conda环境重新尝试
如果以上方法都无效,可能是当前环境存在配置残留,创建一个全新环境从头开始:
# 退出当前环境 conda deactivate # 删除旧环境 conda remove -n yoloe --all -y # 创建新的Python 3.10环境 conda create -n yoloe python=3.10 -y # 激活新环境 conda activate yoloe # 克隆仓库(如果还没克隆) git clone https://github.com/THU-MIG/yoloe/ cd yoloe # 升级依赖工具 pip install --upgrade pip setuptools wheel # 安装requirements pip install -r requirements.txt
方案4:修改lvis-api的setup.py(进阶)
如果愿意修改源码,可以打开D:\code\yoloe\third_party\lvis-api\setup.py,找到第10行导入pip的代码,替换为不依赖pip的方式来获取依赖。比如如果原代码是用pip.req.parse_requirements来读取requirements.txt,可以替换为用setuptools的内置方法,或者手动列出依赖。
问题原因说明
pip在安装-e(editable)模式的包时,会自动创建一个独立的临时构建环境,目的是避免当前环境的依赖干扰构建。但这个默认的隔离环境只包含setuptools和wheel,没有pip。而lvis-api的setup.py中直接使用了import pip的代码,导致在隔离环境中找不到pip模块,从而抛出错误。禁用构建隔离或确保隔离环境包含pip,就能解决这个问题。




