macでPython3でdlibを使って画像処理しようとした時に次のようなエラーが出ました。
import dlib Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.6/site-packages/dlib/__init__.py", line 1, in <module> from .dlib import * ImportError: dlopen(/usr/local/lib/python3.6/site-packages/dlib/dlib.so, 2): Symbol not found: _PyClass_Type Referenced from: /usr/local/opt/boost-python/lib/libboost_python-mt.dylib Expected in: flat namespace in /usr/local/opt/boost-python/lib/libboost_python-mt.dylib
原因はlibboostへのリンクがうまく貼られていないようで、Symbol not foundとなっていました。
次の方法で解決することができました。
まず、必要なインストールがなされているかを確認する。
$ brew install boost-python --with-python3 $ pip3 install dlib
これでもエラーが発生する場合、次のようにしました。
$ mv /usr/local/opt/boost-python/lib/libboost_python-mt.dylib /usr/local/opt/boost-python/lib/libboost_python-mt.dylib.bk $ cp /usr/local/opt/boost-python/lib/libboost_python3-mt.dylib /usr/local/opt/boost-python/lib/libboost_python-mt.dylib