同时导入onnxruntime与load_dataset触发GLIBCXX_3.4.29缺失错误的原因与解决
问题
执行以下Python代码:
import onnxruntime as ort from datasets import load_dataset
触发如下错误:
(env-312) dernoncourt@pc:~/test$ python SE--test_importpb.py Traceback (most recent call last): File "/home/dernoncourt/test/SE--test_importpb.py", line 2, in <module> from datasets import load_dataset File "/opt/conda/envs/env-312/lib/python3.12/site-packages/datasets/__init__.py", line 17, in <module> from .arrow_dataset import Dataset File "/opt/conda/envs/env-312/lib/python3.12/site-packages/datasets/arrow_dataset.py", line 57, in <module> import pyarrow as pa File "/opt/conda/envs/env-312/lib/python3.12/site-packages/pyarrow/__init__.py", line 65, in <module> import pyarrow.lib as _lib ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by /opt/conda/envs/env-312/lib/python3.12/site-packages/pyarrow/lib.cpython-312-x86_64-linux-gnu.so) (env-312) dernoncourt@pc:~/test$
单独执行from datasets import load_dataset或import onnxruntime as ort均正常运行。当前环境信息:
- Python 3.12.9
- Ubuntu 20.04.5 LTS
- datasets==3.5.0
- onnxruntime==1.21.0
错误原因
- 系统库版本不兼容:Ubuntu 20.04默认的
libstdc++.so.6最高仅支持到GLIBCXX_3.4.28,而datasets依赖的pyarrow需要更高版本的GLIBCXX_3.4.29。 - 导入顺序引发的绑定冲突:单独导入时,
onnxruntime或datasets各自会加载适配的库版本;但先导入onnxruntime时,它会优先绑定系统旧版libstdc++,后续pyarrow无法覆盖该绑定,导致版本缺失错误。
解决方法
方法一:升级系统libstdc++库
通过PPA源安装适配的高版本库:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install libstdc++6
验证是否安装成功:
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.29
方法二:调整模块导入顺序
将datasets的导入放在onnxruntime之前,让pyarrow先加载所需的高版本库:
from datasets import load_dataset import onnxruntime as ort
方法三:用conda重新安装兼容依赖
通过conda安装适配Ubuntu 20.04的依赖版本,避免系统库冲突:
conda activate env-312 conda uninstall onnxruntime datasets pyarrow conda install onnxruntime=1.21.0 datasets=3.5.0 pyarrow -c conda-forge
方法四:指定conda环境的库路径
运行脚本前设置环境变量,优先使用conda提供的libstdc++版本:
export LD_PRELOAD=/opt/conda/envs/env-312/lib/libstdc++.so.6 python SE--test_importpb.py
内容的提问来源于stack exchange,提问作者Franck Dernoncourt
相关产品推荐
相关产品推荐

