You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同时导入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
错误原因
  1. 系统库版本不兼容:Ubuntu 20.04默认的libstdc++.so.6最高仅支持到GLIBCXX_3.4.28,而datasets依赖的pyarrow需要更高版本的GLIBCXX_3.4.29。
  2. 导入顺序引发的绑定冲突:单独导入时,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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 07:20:00