天天看點

【Python】 ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

【問題描述】

這裡有一台Linux機器,我在這上面安裝了Anaconda和TensorFlow,結果就在導入TensorFlow測試的時候發生了如下的問題:

>>> import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/__init__.py", line 22, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/python/__init__.py", line 52, in <module>
    from tensorflow.core.framework.graph_pb2 import *
  File "/root/anaconda3/lib/python3.6/site-packages/tensorflow/core/framework/graph_pb2.py", line 6, in <module>
    from google.protobuf import descriptor as _descriptor
  File "/root/anaconda3/lib/python3.6/site-packages/google/protobuf/descriptor.py", line 48, in <module>
    from google.protobuf.pyext import _message
ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /root/anaconda3/lib/python3.6/site-packages/google/protobuf/pyext/_message.cpython-36m-x86_64-linux-gnu.so)
           

然後我就像大多數人一樣去網上搜這個錯誤,但是搜到的内容千篇一律,并沒有解決我的問題,可能他們的解決辦法并不适用于我的這個場景,好在他們的做法給了我一定的啟發,遂列出我的解決辦法,以供大家參考,當然我的這個解決辦法也不一定适用于其他人的場景。

【解決辦法】

1、首先我檢視了下/lib64/libstdc++.so.6這個檔案中關于GLIBCXX的資訊:

strings /lib64/libstdc++.so.6 | grep GLIBCXX
           
【Python】 ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

很顯然,确實沒有GLIBCXX_3.4.21。

2、搜尋anaconda中的libstdc++.so.6相關的資訊

【Python】 ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

果然有,咱們替換一下這個檔案不就行了嗎,于是便有了下面的操作。

3、拷貝檔案到lib64目錄,并重新設定軟連結

cp /root/anaconda3/lib/libstdc++.so.6.0.26 /lib64/
rm -rf /lib64/libstdc++.so.6
ln -s /lib64/libstdc++.so.6.0.26 /lib64/libstdc++.so.6
           

4、再次測試一下

【Python】 ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

OK~錯誤被完美解決。你們在此過程中遇到了哪些問題,歡迎留言,讓我看看你們都遇到了哪些問題~