1. 程式人生 > >安裝Caffe報錯: Cannot load caffe2.python. Error... not

安裝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