conda环境下“/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found”问题解决

1 conda环境下运行python程序报错

conda环境下运行python所报的错误信息如下:

Traceback (most recent call last):
  File "/opt/faceswap/lib/cli/launcher.py", line 229, in execute_script
    process = script(arguments)
  File "/opt/faceswap/scripts/extract.py", line 61, in __init__
    self._extractor = Extractor(self._args.detector,
  File "/opt/faceswap/plugins/extract/pipeline.py", line 135, in __init__
    self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
  File "/opt/faceswap/plugins/extract/pipeline.py", line 637, in _load_detect
    plugin = PluginLoader.get_detector(detector_name)(exclude_gpus=self._exclude_gpus,
  File "/opt/faceswap/plugins/plugin_loader.py", line 55, in get_detector
    return PluginLoader._import("extract.detect", name, disable_logging)
  File "/opt/faceswap/plugins/plugin_loader.py", line 197, in _import
    module = import_module(mod)
  File "/root/anaconda3/envs/faceswap/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/opt/faceswap/plugins/extract/detect/s3fd.py", line 11, in <module>
    from scipy.special import logsumexp
  File "/root/anaconda3/envs/faceswap/lib/python3.9/site-packages/scipy/special/__init__.py", line 663, in <module>
    from . import _ufuncs
  File "_ufuncs.pyx", line 1, in init scipy.special._ufuncs
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /root/anaconda3/envs/faceswap/lib/python3.9/site-packages/scipy/special/_ufuncs_cxx.cpython-39-x86_64-linux-gnu.so)
06/29/2023 15:07:40 CRITICAL An unexpected crash has occurred. Crash report written to '/opt/faceswap/crash_report.2023.06.29.150738070494.log'. You MUST provide this file if seeking assistance. Please verify you are running the latest version of faceswap before reporting

2 问题分析

从错误中分析可知,报错发生在/lib64/libstdc++.so.6,是GLIBCXX_3.4.20找不到所致。

2.1 命令行查看GLIBCXX的版本信息

命令查看显示如下:

[root@localhost faceswap]# strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX*
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

本地确实没有GLIBCXX_3.4.20

2.2 查看软连接

[root@localhost faceswap]ls -l /usr/lib64/libstdc++.so*
lrwxrwxrwx. 1 root root     19 5月   6 14:48 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 995840 9月  30 2020 /usr/lib64/libstdc++.so.6.0.19

连接到linux系统的libstdc++.so.6.0.19

2.3 查看本地所有的“libstdc++.so.6”

 [root@localhost faceswap]# find / -name libstdc++.so.6*
/root/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6.0.26
/root/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.26
/root/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6.0.29
/root/anaconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_1/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-12.2.0-h46fd767_19/lib/libstdc++.so.6
/root/anaconda3/pkgs/libstdcxx-ng-12.2.0-h46fd767_19/lib/libstdc++.so.6.0.30
/root/anaconda3/pkgs/gcc_impl_linux-64-12.1.0-hea43390_17/x86_64-conda-linux-gnu/lib/libstdc++.so.6
/root/anaconda3/pkgs/gcc_impl_linux-64-12.1.0-hea43390_17/x86_64-conda-linux-gnu/lib/libstdc++.so.6.0.30
/root/anaconda3/pkgs/libstdcxx-ng-13.1.0-hfd8a6a1_0/lib/libstdc++.so.6.0.31
/root/anaconda3/pkgs/libstdcxx-ng-13.1.0-hfd8a6a1_0/lib/libstdc++.so.6
/root/anaconda3/lib/libstdc++.so.6
/root/anaconda3/lib/libstdc++.so.6.0.26
/root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
/root/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6.0.26
/root/anaconda3/envs/test/lib/libstdc++.so.6
/root/anaconda3/envs/test/lib/libstdc++.so.6.0.29
/root/anaconda3/envs/vits/lib/libstdc++.so.6
/root/anaconda3/envs/vits/lib/libstdc++.so.6.0.29
/root/anaconda3/envs/voice/lib/libstdc++.so.6
/root/anaconda3/envs/voice/lib/libstdc++.so.6.0.29
/root/anaconda3/envs/wav2lip/lib/libstdc++.so.6
/root/anaconda3/envs/wav2lip/lib/libstdc++.so.6.0.29
/root/anaconda3/envs/whisper/lib/libstdc++.so.6
/root/anaconda3/envs/whisper/lib/libstdc++.so.6.0.29
/root/anaconda3/envs/faceswap/x86_64-conda-linux-gnu/lib/libstdc++.so.6
/root/anaconda3/envs/faceswap/x86_64-conda-linux-gnu/lib/libstdc++.so.6.0.30
/root/anaconda3/envs/faceswap/lib/libstdc++.so.6
/root/anaconda3/envs/faceswap/lib/libstdc++.so.6.0.31
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/local/cuda-11.3/nsight-systems-2021.1.3/target-linux-armv8/host-linux-armv8/libstdc++.so.6
/usr/local/cuda-11.3/nsight-systems-2021.1.3/host-linux-x64/libstdc++.so.6

3 解决方案

拷贝高版本的libstdc++.so到/usr/lib64目录下,并重新建立软连接

cp /root/anaconda3/envs/faceswap/lib/libstdc++.so.6.0.31  /usr/lib64/
ln -sf /usr/lib64/libstdc++.so.6.0.31 /usr/lib64/libstdc++.so.6

通过命令行查看

(faceswap) [root@localhost faceswap]# strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX*
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_3.4.31

问题已经解决!

补充:

如果本地找不到GLIBCXX,升级gcc版本到10后再次查找,升级命令如下

安装centos-release-scl
yum install centos-release-scl -y

安装devtoolset
yum install devtoolset-10-gcc* -y

激活
scl enable devtoolset-10 bash

添加到环境变量
echo "source /opt/rh/devtoolset-10/enable" >> ~/.bash_profile
source /opt/rh/devtoolset-10/enable

查看当前gcc版本
gcc -v

 4 conda环境介绍

Conda是一个开源的包管理器和环境管理系统,用于安装、运行和更新包和其依赖项。它是由Anaconda, Inc.(以前称为Continuum Analytics)创建,用于支持Python程序开发,但它也可以用来管理来自其他语言的包。Conda使得包管理和环境隔离变得简单,对于处理多个项目中的依赖关系和版本控制尤其有用。

Conda是一个强大的工具,对于管理复杂的Python项目和环境至关重要。它简化了包管理和环境设置,使得Python开发更加容易和高效。通过使用Conda,开发者可以确保他们的项目在不同机器和操作系统上都能以相同的方式运行,大大提高了项目的可移植性和可复现性。

4.1 Conda的核心功能

  • 包管理:Conda作为包管理器,可以安装、更新和移除Python包。它通过Conda仓库,如Anaconda Cloud或Conda Forge,来获取包。

  • 环境管理:Conda允许用户创建隔离的环境,以便于不同项目可以拥有不同的库和/或Python版本。这在处理不兼容的依赖项或不同项目的需求时非常有用。

  • 跨平台:Conda支持Linux、OS X和Windows,并允许创建跨平台的Python环境。

  • 开源:Conda是开源的,允许用户查看源代码并对其进行改进。

4.2 使用Conda的优势

  • 解决依赖性问题:Conda可以自动解决包之间的依赖关系,简化了安装过程。

  • 环境隔离:创建独立的环境可以避免包之间的版本冲突,使得项目更稳定。

  • 易于使用:Conda的命令行界面简单直观,易于学习和使用。

  • 广泛的包支持:Conda支持Python的许多流行库和应用程序。

  • 社区支持:作为一个流行的工具,Conda拥有一个活跃的社区,用户可以从中找到支持和资源。

4.3 Conda环境的创建和管理

  • 创建新环境:使用conda create命令创建一个新环境,可以指定Python版本和所需的包。

  • 激活环境:使用conda activate命令来激活环境。

  • 安装包:在激活的环境中使用conda install命令来安装新的包。

  • 环境列表:使用conda env list来查看所有可用的Conda环境。

  • 移除环境:使用conda env remove命令来移除不再需要的环境。

4.4 应用场景

  • 数据科学和机器学习:Conda非常适合于数据科学和机器学习项目,这些项目通常需要多个库和框架。
  • 软件开发:软件开发者使用Conda来管理项目依赖,确保一致的开发环境。
  • 教学和学术研究:教师和研究人员使用Conda来创建具有特定库和工具的环境,用于教学和研究。

4.5 常用命令

Conda 是一个开源的包管理器和环境管理器,广泛用于管理Python环境和包。以下是一些常用的 Conda 命令:

  • 安装 Conda 包:

    • conda install [package-name]: 安装指定的包。
  • 创建和管理环境:

    • conda create --name [env-name]: 创建一个新的环境。
    • conda activate [env-name]: 激活指定环境。
    • conda deactivate: 退出当前环境。
    • conda env list: 列出所有可用的环境。
  • 管理包:

    • conda list: 在当前环境中列出所有已安装的包。
    • conda update [package-name]: 更新指定的包。
    • conda remove [package-name]: 移除指定的包。
  • 搜索包:

    • conda search [package-name]: 搜索可用的包版本。
  • 环境导出和导入:

    • conda env export > environment.yml: 导出当前环境的配置到一个YAML文件。
    • conda env create -f environment.yml: 使用YAML文件创建一个新环境。
  • 更新 Conda:

    • conda update conda: 更新 Conda 到最新版本。
  • 查看 Conda 信息:

    • conda info: 显示关于 Conda 的信息。
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
该错误提示表明在安装飞浆模块后,发生了一个导入错误。具体错误是/lib64/libstdc.so.6库的版本不符合要求,需要GLIBCXX_3.4.20版本,但当前系统中没有找到这个版本的库。 为了解决这个问题,我们可以通过以下两个步骤来解决: 1. 首先,我们需要查看系统中GLIBCXX的版本信息。可以使用命令行输入以下命令:`strings /usr/lib64/libstdc.so.6 | grep GLIBCXX`。这个命令会列出libstdc.so.6库中包含的GLIBCXX版本信息。 2. 其次,我们可以通过查看软连接来确认系统中libstdc.so.6指向的版本。使用命令行输入以下命令来查看软连接:`ls -l /usr/lib64/libstdc.so.6`。这个命令会显示libstdc.so.6的软连接信息,其中包括指向的具体版本文件。 根据以上信息,可以判断如果当前系统中没有GLIBCXX_3.4.20版本的库,那么可能需要更新或者安装新的版本。你可以尝试升级libstdc++库来满足飞浆模块对GLIBCXX_3.4.20版本的要求。具体的升级步骤可能因系统不同而有所差异,你可以根据自己的系统文档或者搜索引擎来查找相关的升级方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [libstdc++.so.6.0.25](https://download.csdn.net/download/qq_39619888/87474616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [conda环境下“/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found”问题解决](https://blog.csdn.net/lsb2002/article/details/131456857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧医疗探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值