实验环境:
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了解比较少,遇到问题解决问题,至此与各位分享!