环境:
torch==1.9.0+cu111
scikit-learn==1.0.2
scipy==1.7.3
...
背景:
需要用scipy,没有意识到scikit-learn在安装的时候同时安装了scipy,手贱在conda环境中pip install scipy了一下,之后在跑模型的时候,import DataModule时报错:
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version
GLIBCXX_3.4.29‘ not found
`
切换其他环境,还是有一样的问题,
通过如下命令查看机器中装的GLIBCXX的版本:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX
最高版本是3.4.24,低于要求。
上网查报错,提示的解决方法为:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update -y
sudo apt upgrade -y
然而执行第一句就报错,显示Connection failed.
之后继续找bug,忘了输了个啥,连pip list/conda list都没办法执行,报错:ModuleNotFoundError: No module named '_sysconfigdata_x86_64_conda_linux_gnu'
解决方法参考这篇博客
解决完后,再pip list,定睛一看,发现装scipy的时候把torch给升级了(1.9.0 -> 1.13.0),猜测GLIBCXX的错误和这个有关,把torch降级回1.9.0,问题解决
然后在import sklearn包的时候,其中有关scipy的部分又出现报错,猜测是因为之前手贱直接装的scipy和sklearn版本不兼容(重装低版本/高版本的scipy都没有)。就再重新pip install scikit-learn,问题解决。
注:scikit-learn 使用的scipy版本实际上和我之前pip install scipy的版本一样,但就是会报错