赞
踩
初步分析:就报错信息而言,ModuleNotFoundError: No module named ‘packaging’:这是主要的错误,因为找不到名为packaging的模块而失败。按常规解决方案,pip install packaging就能够解决。但最后该装的东西还是没有装好。
进一步分析:看到这一句信息:
这句话提供了对遇到的错误的一个重要线索,说明错误发生在pip调用的一个子进程中,而不是pip本身的直接问题。
错误来源:pip在执行某些操作时,常常需要调用子进程执行具体的任务,比如编译代码、运行安装脚本等。这里的错误是在这样一个子进程中发生的,而不是pip自身的代码中。
解决办法:经过网络搜索求助,大多都解释说由于某些库的版本不兼容导致的,按照他们的解决策略,最终也未能解决。
在某篇博客中看到,加入–no-build-isolation选项有用(具体是那一篇忘记了)。
原命令为:pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
加上:pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --global-option="--cpp_ext" --global-option="--cuda_ext" ./
–no-build-isolation选项的作用
–no-build-isolation选项禁用了pip的构建隔离特性。默认情况下,当pip尝试安装一个包含pyproject.toml文件的包时,它会创建一个隔离的环境来构建这个包。这个隔离环境确保了构建过程中使用的依赖与项目其他部分的依赖隔离开来,从而减少了版本冲突的可能性。
当使用–no-build-isolation时,pip将不会创建这个隔离环境,而是直接在当前环境中构建包。这意味着它会使用当前环境中已安装的依赖来执行构建过程。
为什么加入–no-build-isolation后问题解决
问题的根源在于构建过程中需要的某些依赖(如packaging模块)在隔离的构建环境中不可用。当禁用了构建隔离,构建过程就能访问到当前环境中已经安装的所有依赖,包括packaging模块,从而解决了之前的构建失败问题。
以上解决方案,并不适用这种报错的所有情况。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。