报错内容
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /cluster/home3/zjc/Soft/anaconda3/lib/python3.9/site-packages/scipy/linalg/_matfuncs_sqrtm_triu.cpython-39-x86_64-linux-gnu.so)
报错说明
`GLIBCXX_3.4.26'文件是被 _matfuncs_sqrtm_triu.cpython-39-x86_64-linux-gnu.so 需要的,但是没找到这个文件。
1 查看文件
使用下述命令查看/usr/lib/x86_64-linux-gnu/libstdc++.so.6对应的软连接信息,发现其指向版本为6.0.25。
cd /usr/lib/x86_64-linux-gnu/
ls -l libstdc++.so*
查看结果如下,指向版本为6.0.25
2 查看包含的动态库
使用下述命令查看libstdc++.so.6链接包含的动态库,发现确实未包含GLIBCXX_3.4.26
strings libstdc++.so.6 | grep GLIBCXX
大多解决方法:需要将/usr/lib/x86_64-linux-gnu/libstdc++.so.6下对应的软连接进行修改替换。但由于使用实验室的服务器时不具有root权限,无法进行替换,因此考虑指定加载库的路径。
3 开始解决
检查服务器中是否有包含GLIBCXX_3.4.29的libstdc++.so.6版本(最好是自己路径下)
find /cluster/home3/xxx -name libstdc++.so.6*
我的服务器路径:xxx是自己的用户名
这里find后面的路径一般是根据自己服务器中,用户文件所在路径进行修改,我的所有文件都在/home3/{自己用户名}这个目录下,查看如下
4 现在查看这个动态链接库/cluster/home3/zjc/Soft/anaconda3/envs/SAM/lib/libstdc++.so.6
(上面截图里面的倒数第六个)
里面有没有GLIBCXX_3.4.26
strings /cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib/libstdc++.so.6 | grep GLIBCXX_3.4.2
strings /cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib/libstdc++.so.6 | grep GLIBCXX_3.4.2
发现有GLIBCXX_3.4.26
6 如果有这个文件,加载库的路径
上述含有GLIBCXX_3.4.26信息的
libstdc++.so.6文件的
路径为/cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib
我们直接在终端中修改指定加载库的路径:(这句话不太理解直接在终端里面运行前先输入这个吗?)
export LD_LIBRARY_PATH=/cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib
export LD_LIBRARY_PATH=/cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib
(或者有人说添加:$LD_LIBRARY_PATH后缀才行
export LD_LIBRARY_PATH=/cluster/home3/xxx/Soft/anaconda3/envs/SAM/lib:$LD_LIBRARY_PATH)
7 最终的解决办法,仅适用于我自己。
我直接激活了另外一个环境就可以了,hhh