HaneCa

独り立ちへ向けた長い道

dlibでSymbol not foundエラー

投稿日: 2017年9月25日 最終更新日: 2020年8月10日

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

参考サイト

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください