Skip to content

# 解决 Conda 使用中 GLIBCXX_3.4.29 not found 问题的三种方法

问题描述

在使用 Conda 时,可能会遇到以下错误:

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /home/你的用户名/anaconda3/envs/某个.so文件)

该错误通常是因为系统库与 Conda 环境中的库不匹配导致的。

AMD ROCm提供的一种解决方案(我比较推荐)

When using a Conda environment, ImportError: version 'GLIBCXX_3.4.30' not found is likely to occur.
Upgrade GCC for Conda using the following command.

conda install -c conda-forge gcc=12.1.0 gxx=12.1.0 -y

解决方法

方法1:替换 libstdc++.so.6 软连接

该方法涉及修改 /lib 路径下的文件,但在服务器环境中可能不太方便。因此,该方法在实际操作中可能不太适用。

方法2:降低 scipy 版本

在某些情况下,降低 scipy 的版本可以解决问题。例如,在安装 mmdection 时,这种方法被证明是有效的。但这种方法可能在其他场景下不适用。

方法3:设置环境变量以使用 Conda 环境中的 libstdc++.so.6

  1. 检查 Conda 环境中的 libstdc++.so.6
  2. 打开 Conda 环境的 lib 目录:

    cd /home/你的用户名/anaconda3/envs/你的环境名/lib
    
  3. 检查是否存在 libstdc++.so.6 文件,并验证其版本:

    strings libstdc++.so.6 | grep GLIBCXX
    
  4. 设置环境变量

  5. 如果 Conda 环境中存在所需的 libstdc++.so.6,可以通过设置 LD_LIBRARY_PATH 环境变量来让程序使用该文件:

    export LD_LIBRARY_PATH="/home/你的用户名/anaconda3/envs/你的环境名/lib:$LD_LIBRARY_PATH"
    
  6. 验证设置

  7. 重新运行程序,检查问题是否已解决。

总结

  • 方法1:适用于可以修改系统库的情况,但在服务器环境中可能不太方便。
  • 方法2:适用于特定库版本冲突的情况,但可能不适用于所有场景。
  • 方法3:通过设置环境变量,让程序使用 Conda 环境中的库,通常是最通用且有效的解决方案。

根据具体环境和需求选择合适的方法来解决问题。

Ref

https://rocm.docs.amd.com/projects/radeon/en/latest/docs/install/wsl/install-pytorch.html https://blog.csdn.net/wahaha987656789/article/details/137023165