安裝Caffe報錯: Cannot load caffe2.python. Error... not
警告
WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode.
出現上面的問題的話, 首先看看是不是沒有安裝NCCL, 如果沒有安裝的話, 安裝以後應該就能好使
報錯
使用下面的指令測試caffe安裝是否成功
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
如果返回Failure
, 那麼進入python, 並執行相關語句獲得更準確的錯誤資訊
$ python Python 3.5.4 |Continuum Analytics, Inc.| (default, Aug 14 2017, 13:26:58) [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from caffe2.python import core WARNING:root:This caffe2 python run does not have GPU support. Will run in CPU only mode. CRITICAL:root:Cannot load caffe2.python. Error: /home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/zerozone/.pyenv/versions/a3py3.5/lib/python3.5/site-packages/caffe2/python/caffe2_pybind11_state.cpython-35m-x86_64-linux-gnu.so)
這裡我首先出現瞭如下錯誤:
CRITICAL:root:Cannot load caffe2.python. Error: /home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/…/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found (required by /home/zerozone/.pyenv/versions/a3py3.5/lib/python3.5/site-packages/caffe2/python/caffe2_pybind11_state.cpython-35m-x86_64-linux-gnu.so)
根據提示, 是位於路徑home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/../lib/
中的 libstdc++.so.6
版本中沒有GLIBCXX_3.4.20
導致出錯, 那麼我們就先進入該路徑:
$cd home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/../lib/
$strings strings ./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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
可以看到, 確實缺少了3.4.20 版本, 那麼該怎麼辦?
如果你使用的是Anaconda, 那麼就可以看看/home/zerozone/.pyenv/versions/anaconda3-5.0.1/lib
路徑下的libstdc++.so.6
版本是否有我們需要的, 如果沒有使用的話, 也可以看看/usr/lib/x86_64-linux-gnu/
或 /usr/lib/
路徑下的版本號, 總之, 只要有任何一個擁有3.4.20版本, 我們都可以將其拷貝到home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/../lib/
中, 以替換缺少版本的libstdc++.so.6
$strings /usr/lib/libstdc++.so.6 | grep 'CXXABI'
或者
$strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep 'CXXABI'
或者
$strings /home/zerozone/.pyenv/versions/anaconda3-5.0.1/lib/libstdc++.so.6 | grep 'CXXABI'
# 使用cp指令進行復制, 複製任何一個都可以, 只要包含版本3.4.20
cp /home/zerozone/.pyenv/versions/anaconda3-5.0.1/lib/libstdc++.so.6 home/zerozone/.pyenv/versions/anaconda3-5.0.1/envs/a3py3.5/bin/../lib/
接下來在繼續試試import, 發現報錯如下, 該錯誤和上面的錯誤是一毛一樣的, 所以用同樣的辦法就可以解決, 只不過庫檔案的名字和版本號不同而已
CRITICAL:root:Cannot load caffe2.python. Error: /home/zerozone/.pyenv/versions/a3py3.5/lib/python3.5/site-packages/caffe2/python/…/…/torch/lib/libgomp.so.1: version `GOMP_4.0’ not found (required by /home/zerozone/.pyenv/versions/a3py3.5/lib/python3.5/site-packages/caffe2/python/…/…/torch/lib/libcaffe2.so)
Detectron ops lib not found; make sure that your Caffe2 version includes Detectron module
造成該錯誤的原因主要是沒有找到 libcaffe2_detectron_ops_gpu.so
, 有兩個選擇, 將 libcaffe2_detectron_ops_gpu.so
所在的路徑新增到PYTTHONPATH中即可解決
export PYTHONPATH=$PYTHONPATH:/home/zerozone/Works/Competition/DF/pytorch/build