本地部署BERN2启动失败:缺失GLIBCXX_3.4.30版本依赖
解决BERN2启动时GLIBCXX_3.4.30缺失的问题
问题描述
启动BERN2时触发以下错误:
ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/../../../libfaiss.so)
完整报错堆栈:
from normalizers.neural_normalizer import NeuralNormalizer File "/home/ubuntu/BERN2/BERN2/normalizers/neural_normalizer.py", line 17, in <module> import faiss File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/__init__.py", line 18, in <module> from .loader import * File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/loader.py", line 65, in <module> from .swigfaiss import * File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/swigfaiss.py", line 10, in <module> from . import _swigfaiss ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/../../../libfaiss.so) Traceback (most recent call last): File "/home/ubuntu/BERN2/BERN2/server.py", line 1, in <module> from app import create_app File "/home/ubuntu/BERN2/BERN2/app/__init__.py", line 12, in <module> import bern2 File "/home/ubuntu/BERN2/BERN2/bern2/__init__.py", line 1, in <module> from bern2.bern2 import BERN2 File "/home/ubuntu/BERN2/BERN2/bern2/bern2.py", line 22, in <module> from normalizer import Normalizer File "/home/ubuntu/BERN2/BERN2/bern2/normalizer.py", line 11, in <module> from normalizers.neural_normalizer import NeuralNormalizer File "/home/ubuntu/BERN2/BERN2/normalizers/neural_normalizer.py", line 17, in <module> import faiss File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/__init__.py", line 18, in <module> from .loader import * File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/loader.py", line 65, in <module> from .swigfaiss import * File "/opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/swigfaiss.py", line 10, in <module> from . import _swigfaiss ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/conda/envs/bern2/lib/python3.11/site-packages/faiss/../../../libfaiss.so)
解决方法
方法一:优先使用conda环境内的libstdc++(推荐,无需root)
- 激活你的BERN2 conda环境:
conda activate bern2 - 临时设置系统优先加载conda环境中的库:
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH - 启动BERN2即可。如果需要永久生效,可将上述
export命令添加到conda环境的激活脚本中:
编辑$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh(不存在则创建),添加:export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
方法二:更新系统libstdc++(需root权限)
- 先检查系统已安装的gcc版本,确保安装了gcc-11或更高版本(GLIBCXX_3.4.30由gcc-11.1及以上提供):
gcc --version - 安装gcc-11(以Ubuntu为例):
sudo apt update && sudo apt install gcc-11 g++-11 - 复制高版本的libstdc++.so.6到系统库目录:
sudo cp /usr/lib/gcc/x86_64-linux-gnu/11/libstdc++.so.6 /lib/x86_64-linux-gnu/ - 更新系统库缓存:
sudo ldconfig
方法三:重新安装兼容版本的faiss
- 卸载当前通过pip安装的faiss:
pip uninstall -y faiss faiss-cpu - 使用conda安装faiss-cpu(conda包会自带匹配的依赖库):
conda activate bern2 conda install -c conda-forge faiss-cpu
内容的提问来源于stack exchange,提问作者Pavithra VJ
相关产品推荐
相关产品推荐

