conda虚拟环境中的pip、No module named问题、missing the 'build_editable' hook和PEP660
在mmyolo安装过程中,碰到了一些错误。在此记录下,也为碰到类似错误的朋友提供解决方法。
1、conda虚拟环境中的pip,有时候输出位置不一样
capios@capios-server:~$ conda activate mmyolo (mmyolo) capios@capios-server:~$ which pip /home/capios/anaconda3/envs/mmyolo/bin/pip (mmyolo) capios@capios-server:~$ pip -V pip 26.0.1 from /home/capios/.local/lib/python3.10/site-packages/pip (python 3.10)
conda虚拟环境创建后,建议确认下pip。如果出现以上问题,请卸载再装pip
#虚拟幻境里,卸载pip (mmyolo) capios@capios-server:~$ python -m pip uninstall pip #再安装pip (mmyolo) capios@capios-server:~$ python -m ensurepip --default-pip
2、pip安装时报No module named,但是确定已经存在却不被识别。
比如:
No module named 'pkg_resources'
No module named 'torch'
但是确定已存在
#查看是否存在,输出OK说明已存在 python -c "import pkg_resources; print('OK')" python -c "import torch; print('OK')"
为什么不被识别?
pip有构建隔离机制,当安装一个需要编译的包时,pip会创建一个临时的、全新的子环境,在里面下载并编译所有必要的构建工具(如 setuptools、wheel 等),编译完成后再将这个子环境销毁。
但是这个临时的子环境里没有pkg_resources、torch,只是你的环境或虚拟环境(conda)里有。
解决方法:
指令中添加 --no-build-isolation
它告诉pip“别创建临时子环境了,直接用当前的环境(比如激活的虚拟环境)里已经装好的包来编译这个新包”
例如
# Install albumentations,使用--no-build-isolation参数,不使用会报缺少pkg_resources
pip install -r requirements/albu.txt --no-build-isolation
3、missing the 'build_editable' hook和PEP660
报错如下:
ERROR: Project file:///home/capios/mmyolo uses a build backend that is missing the 'build_editable' hook, so it cannot be installed in editable mode. Consider using a build backend that supports PEP 660.
新版本的pip在编译包时会使用pyproject.toml,但是我的mmyolo文件夹里没有这个,只有setup.py
在pip旧版本中,如果一个项目里没有 pyproject.toml 文件,pip 在尝试进行可编辑安装(pip install -e .)时,最终会回退并调用 setup.py
解决方法:
降低pip版本,安装24.0版本
pip install pip==24.0

浙公网安备 33010602011771号