在新环境使用torch遇到问题
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /.../anaconda3/envs/xxx/lib/python3.7/site-packages/google/protobuf/pyext/_message.cpython-37m-x86_64-linux-gnu.so)
这个说的是编译器需要的一个GLIBCXX_3.4.21在默认路径下没有,因为默认路径/lib64/里的libstdc++.so.6版本较低。
用
strings /lib64/libstdc++.so.6 | grep GLIBCXX
可以看到已经支持的版本,我的只支持到了20,刚好没有21。
如果使用了比较新的anaconda来配环境,其实conda自带了新版本的libstdc++.so.6.0.26,就在anaconda的lib文件夹里。
很多博客说把anaconda的新版本.so文件复制到默认路径/lib64里再创建软链接。这个方法确实行得通。
但是这在使用服务器集群&没有权限的时候,没有可行性。
最简单的方式,在自己的环境里使用export path指定lib路径就可以了,使用anaconda的lib路径,比如
export LD_LIBRARY_PATH=/.../anaconda3/envs/torchcuda11/lib:$LD_LIBRARY_PATH
写到.bashrc里也好,进入环境后再单独执行指令或者脚本也好。总之指定了lib目录后,优先去conda的这个路径下找.so文件,就可以找到新的,不会报错了。
当然,前提是anaconda的lib能满足需求。
祝好