这个报错说明 PaddlePaddle 在加载其核心库 libpaddle.so 时,依赖的 C++ 标准库(libstdc++.so.6)缺少 GLIBCXX_3.4.20 这个符号,而系统中默认的 /lib64/libstdc++.so.6 版本较旧,不满足要求。
原因分析
系统库版本过旧
系统默认的 libstdc++ 可能来自较老的 GCC 版本(比如 4.8 或更低),而GLIBCXX_3.4.20要求至少 GCC 4.9 版本的支持。Conda 环境中的库未被优先加载
虽然你通过 conda 安装了 libstdcxx-ng(这个包通常会提供较新的 libstdc++),但由于环境变量(如 LD_LIBRARY_PATH)的设置问题,程序在运行时优先加载了系统的 /lib64/libstdc++.so.6,而不是 conda 环境下更新的版本。
解决方案
验证 conda 环境中 libstdc++ 版本
先确认 conda 环境下的 libstdc++ 是否包含所需的版本:strings $CONDA_PREFIX/lib/libstdc++.so.6 | grep GLIBCXX检查输出中是否包含
GLIBCXX_3.4.20及更高版本。调整 LD_LIBRARY_PATH 优先使用 conda 库
在启动 Python 或运行程序前,设置环境变量让 conda 环境中的库优先加载:export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH然后再运行你的脚本:
python scrapV3.py检查 Conda 环境配置
如果以上方法无效,确保在激活 conda 环境时,环境变量能够自动配置。如果环境变量设置有问题,可以在环境激活脚本中添加上述export命令。
采用上述步骤后,Python 应该会加载 conda 环境中较新的 libstdc++,从而满足 PaddlePaddle 对 GLIBCXX 的要求,报错也应该得到解决。