ImportError: /usr/lib64/libm.so.6: version `GLIBC_2.23‘ not found (required by /opt/conda/lib/ ...

文章讲述了在特定的docker容器环境中,使用Keras时遇到ImportError,原因在于TensorFlow版本过低。作者通过将TensorFlow版本从1.14.0升级到1.15.0解决了问题,强调了在Docker容器中直接修改底层库如GNU和GCC较困难时,这种版本调整作为有效解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验环境:

docker容器相关版本

  • gcc==7.3.1 (gcc --version)
  • conda==22.9.0  
  • python==3.7 
  • gnu==2.17(ldd --version)
  • Keras==2.3.1
  • tensorflow==1.14.0

上述环境中,我安装好keras、tensorflow后(主要是keras依赖于tensorflow),使用keras时报错,主要信息如下:

Using TensorFlow backend.

    from keras.models import Model
  File "/opt/conda/lib/python3.7/site-packages/keras/__init__.py", line 3, in <module>
    from . import utils
  File "/opt/conda/lib/python3.7/site-packages/keras/utils/__init__.py", line 6, in <module>
    from . import conv_utils
  File "/opt/conda/lib/python3.7/site-packages/keras/utils/conv_utils.py", line 9, in <module>
    from .. import backend as K
  File "/opt/conda/lib/python3.7/site-packages/keras/backend/__init__.py", line 1, in <module>
    from .load_backend import epsilon
  File "/opt/conda/lib/python3.7/site-packages/keras/backend/load_backend.py", line 90, in <module>
    from .tensorflow_backend import *
  File "/opt/conda/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py", line 5, in <module>
    import tensorflow as tf
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/__init__.py", line 28, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/opt/conda/lib/python3.7/site-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "/opt/conda/lib/python3.7/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/opt/conda/lib/python3.7/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: /usr/lib64/libm.so.6: version `GLIBC_2.23' not found (required by /opt/conda/lib/python3.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so)


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/errors

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

错误关键是:

ImportError: /usr/lib64/libm.so.6: version `GLIBC_2.23'

主要讲的是gnu的事情,gnu这里就不展开介绍了,主要说一下解决方法:

  • 探索出来的简便方法,换用tensorflow版本为1.15.0(原来是1.14.0),使用如下命令在docker容器中替换原来的版本
    pip install tensorflow==1.15.0 -i https://pypi.douban.com/simple

    别问我是怎么知道的(尝试出来的),tensorflow版本差异比较大,而python3.7最低支持的tensorflow版本是1.13.1,我先把tensorflow版本降低到1.13.1,发现还是报上面的错误,然后又把版本提升了一个小版本到1.15.0,结果所有错误都解决了,兼容了!

  • 网上各种说法的都有,比如更换python到3.6、提升gnu版本、升级gcc等等

但对于docker容器中,且容器不太好修改的时候(dockerfile中修改gnu、gcc比较麻烦),上述方法无疑是最有效、最高效的,因为大多数人对gnu、gcc了解比较少,遇到问题解决问题,至此与各位分享!

当在部署TensorFlow时出现"ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found"错误时,这是因为你的系统缺少GLIBC库的版本2.23GLIBCGNU C库,是Linux系统的重要组件之一。 要解决这个问题,你可以按照以下步骤进行操作: 1. 首先,确认你的系统是否已经安装了GLIBC库。你可以通过在终端中运行以下命令来检查: ``` ldd --version ``` 如果你的系统没有安装GLIBC库或者版本较低,你将需要更新你的系统。 2. 更新你的系统以安装GLIBC库的版本2.23或更高版本。你可以使用操作系统的包管理器来更新GLIBC。例如,如果你使用的是Ubuntu发行版,你可以运行以下命令: ``` sudo apt-get update sudo apt-get upgrade ``` 如果你使用的是其他发行版,请参考相应的包管理器文档来更新系统。 3. 如果在更新系统后仍然遇到问题,你可以尝试手动安装GLIBC库的版本2.23。你可以从GLIBC的官方网站下载适合你系统的安装包,并按照官方文档的指导进行安装。 4. 在安装完GLIBC库的版本2.23后,你可能会遇到其他错误。如果你在运行"make install"命令时遇到问题,你可以尝试使用多线程编译来提高效率。你可以运行"make -j n"命令,其中n是你服务器的核数。这将启动n个线程并行编译。 5. 如果你在执行"make install"命令时仍然遇到错误,你可以尝试执行以下命令来创建一个链接: ``` cd /lib64 ln -sf libm-2.23.so libm.so.6 ``` 这将创建一个libm.so.6的软链接,指向libm-2.23.so文件。 通过按照上述步骤操作,你应该能够解决"ImportError: /lib64/libm.so.6: version `GLIBC_2.23' not found"错误,并成功部署TensorFlow。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

带鱼工作室

感谢您的支持!

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

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

打赏作者

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

抵扣说明:

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

余额充值