- タイトルにある状況の人.
以下のErrorが出てきた人 - 「No module named ‘cv2’」
- 「dlopen(/Users/***/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so, 2): Library not loaded: @rpath/libhdf5.10.dylib」
Macにpython3とOpencvを入れていざ実行!!
テンションMAXでプログラム回すぜー!!ってなっていても,Errorの連続が続きました.
インターネットをあれこれ見て対処法を色々と検索したのですが,どれも上手くいかない...
根気強く色々やったら最終的には解決しましたが,日本語のページだけではなく,Google翻訳を駆使して海外のサイトにまでいく始末.
今回はおいらみたいな犠牲者が新たに増えないためにも,Errorの解消法を記しておきます.
前提として
パソコン自体には,Opencv(cv2)をインストールしています.
しかし,インターネットに書かれている事をあれやこれや実行してしまったため,入っているのは確認できますが,どうやってインストールしたのかは覚えていない!
そしてErrorに遭遇したという前提を無視しないでください.
No module named ‘cv2’
まずこれ.ターミナルで $ 「python3」と打って,その後にcv2が使えるか確かめます!(import cv2を入力)
すると
えっ!!「ImportError: No module named ‘cv2’」!!!
おかしい,確かにcv2は使える状況だぞ!python2 の方で確かめて見ました.
ほら!!しっかり回る!!python2ではcv2 がインポートできるようだ,
(しかしpython3で使えるその他ライブラリのため,どうしてもpython3でcv2を使えるようにしなければならない)
python3でcv2がimportされない原因と対策
色々調べましたら,おいらのpyrhon3はanaconda環境らしいです.そして,Opencvのインストールはbrewの方で行なっていたのが原因でした.
なんだと!そんな事知るか!って感じでしたがそうらしいです.
そのためanaondaを使ってopencvのインストールを行います.
(参考:Anacondaを使ってMac OSにOpenCVをインストールする)
ターミナル上で以下を実施します.
pyenvのインスールとパスを通すコマンド(.bash_profileへ)
1 2 3 4 5 | $ brew install pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile |
その後,anacondaを使ってOpencvを入れていきます.
anacondaのバージョン(3-5.2.0)は使っているpythonに合わせてください.
おいらの場合は3.5.2だったので合わせます.
1 2 3 4 5 | $ pyenv install anaconda3-5.2.0 $ pyenv global anaconda3-5.2.0 $ conda install -c menpo opencv3 |
これで完成です!...
dlopen(/Users/~~~/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so, 2): Library not loaded: @rpath/libhdf5.10.dylib
先ほどの処理を終え,’import cv2′ をpython3下で実行するとこんなErrorが出てきました.
いや,長すぎでしょ.
しかもReason:にも変な事言われてますし.
環境を整えていきます
こちらのエラーに対して以下の記事があって実行しました.
(参考:openCVのImportErrorとかの話)
Library not loaded: @rpath/libhdf5.10.dylib
この一文が出ているので,@rpathにlibhdf5.10.dylibを通せばなんとかなるらしい!よしやるぞ!
1 2 3 4 5 | $ brew install hdf5 $ brew search $ conda update libhdf5 <span class="red">PackageNotInstalledError: Package is not installed in prefix. prefix: /Users/ueharakenyuu/.pyenv/versions/anaconda3-4.1.1 package name: libhdf5</span> |
しかし,Errorが出てきておいらの環境だとダメでした.
その後色々調べると,この一文で解決しました
1 | $ conda update --all |
(参考:Macでopencv3をインポートするとlibfreetype.6.dylibエラー)
時系列的に解決していっているので,正直何が効いているのか微妙です.
最後の「conda update –all」だけでも良いかもしれませんし,上の「hdf5」のインストールが必要になるかもしれません.
しかし,なんとかこれでエラーが消えましたー!
ようやくcv2がインポートできるようになりましたとさ...
めでたしめでたし