如何将这个ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.13’ not found (required by /opt/aps/workdir/miniconda3/envs/paddle/lib/python3.10/site-packages/paddle/base/libpaddle.so)改为先找conda的环境中的
这个错误表明当前程序在运行时,加载的是系统路径下的 libstdc++.so.6,而不是 Conda 环境 提供的版本。要解决这个问题,可以让程序优先使用 Conda 环境 中的 libstdc++
。
解决方法
1. 找到 Conda 环境中的 libstdc++ 库
在 Conda 环境中,libstdc++.so.6
位于:
$CONDA_PREFIX/lib/libstdc++.so.6
$CONDA_PREFIX
是当前 Conda 环境的根目录路径。
您可以验证路径是否存在:
ls $CONDA_PREFIX/lib/libstdc++.so.6
2. 修改运行时库搜索路径
通过设置环境变量 LD_LIBRARY_PATH
,让程序优先从 Conda 环境加载库文件。
临时修改(当前终端有效):
激活您的 Conda 环境后,执行以下命令:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
一步到位示例:
conda activate paddle
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
python -c "import paddle; print('PaddlePaddle 加载成功')"
3. 永久修改(自动配置环境)
将 LD_LIBRARY_PATH
配置到环境变量中:
方法 1:修改环境变量文件
在当前用户的 .bashrc
或 .zshrc
文件中添加:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
保存后重新加载配置:
source ~/.bashrc
方法 2:Conda 环境专属配置
在目标 Conda 环境的激活脚本中配置:
-
编辑 Conda 环境的激活脚本:
nano $CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
-
添加以下内容:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
-
保存并退出,重新激活环境:
conda deactivate conda activate paddle
4. 验证修改是否生效
使用以下命令检查当前使用的 libstdc++.so.6
路径:
ldd $CONDA_PREFIX/lib/python3.10/site-packages/paddle/base/libpaddle.so | grep libstdc++
- 如果输出路径显示为 Conda 环境 下的
libstdc++.so.6
,说明修改成功。
总结步骤
- 找到 Conda 环境下的 libstdc++.so.6 路径。
- 设置
LD_LIBRARY_PATH
,优先加载 Conda 提供的库。 - 验证配置是否生效,确保不再加载系统库。
这将解决 CXXABI_1.3.13
版本不匹配的问题。