1.ModuleNotFoundError: No module named 'apex'
误以为是通过pip install apex安装,其实跟报错的包不一样。通过如下指令安装nvidia的apex:
git clone https://www.github.com/nvidia/apex
cd apex
下载完对应的包和进行对应文件夹后需要执行安装,这里我出现了问题。执行安装操作一般之前文章建议的指令是如下三种,但均出现问题2情况:
1.python setup.py install --cpp_ext --cuda_ext
2.pip install -e .
3.pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
2.Getting requirements to build editable ... error error: subprocess-exited-with-error
均出现问题:
但是我已经安装过了torch,却报错没安装。搜索发现应该其实是依赖的问题。
最终建议使用下面指令安装:
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --global-option="--cpp_ext" --global-option="--cuda_ext" ./
3.安装成功
4.原因
该篇博客指出:
1.–no-build-isolation选项的作用
–no-build-isolation选项禁用了pip的构建隔离特性。默认情况下,当pip尝试安装一个包含pyproject.toml文件的包时,它会创建一个隔离的环境来构建这个包。这个隔离环境确保了构建过程中使用的依赖与项目其他部分的依赖隔离开来,从而减少了版本冲突的可能性。当使用–no-build-isolation时,pip将不会创建这个隔离环境,而是直接在当前环境中构建包。这意味着它会使用当前环境中已安装的依赖来执行构建过程。
2.加入–no-build-isolation后解决原因
问题的根源在于依赖问题。当禁用了构建隔离,构建过程就能访问到当前环境中已经安装的所有依赖,从而解决了之前的构建失败问题。