読者です 読者をやめる 読者になる 読者になる

ぴろの狂人日記

2014年から頑張ってブログを継続しようと思います。「継続と習慣」を今年の目標にしたので、頑張って更新を続けようと思います。おいおいはレビューや数学や認知科学などについて記事を書いていければと思っています

Macでpython3の環境構築14---OpenCV3のインストール2---

python

前回、

piroshhh.hatenablog.com

では、OpenCV3のインストールを試してみたものの、うまくいかなかったというお話でした。

ここからネットの情報を調べながら、色々と試行錯誤が始まりました。

その試行錯誤の過程で行なったことを記録していくわけですが、まずうまくいった操作を書いておきます。

うまくいった操作

結論からいうと、次の操作でうまくいきました。

hiroshi-no-MacBook-Air:~ hiroshi$ sudo sh -c "echo '/usr/local/opt/opencv3/lib/python3.4/site-packages' >> /usr/local/lib/python3.4/site-packages/opencv3.pth"

ターミナルを起動して上記コマンドを打つと、無事OpenCV3をインポートできるようになりました。
このコマンドの意味や効果もある程度調べてみましたが、そのあたり詳細は、また別の機会に書きたいと思います。

うまくいかなかった操作

    1. sys.pathに追加してみる
    2. sys.pathというところにpythonがモジュールを探す探索場所が書かれているという噂だったので、次のようにしてみましたが、できませんでした。もっともあまり理解せずに行なったので、そもそもが、正しいコマンドを実行していたのはわかりませんが。
hiroshi-no-MacBook-Air:~ hiroshi$ python3      #ターミナルを起動して「python3」と打ってreturn。すると以下3行が表示され>>>で次のコマンドの入力待ちになる。
Python 3.4.3 (default, Aug 11 2015, 08:57:25) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys         # 「import sys」と打ってreturn。
>>> sys.path.appned("/usr/local/lib/python3.4/site-packages")       # sys.pathに文字列を追加する。
>>> print(sys.path)       #sys.pathの中身を表示。無事追加されたのかを確認する。確かに一番最後に追加されています。
['', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python34.zip', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/site-packages']

 

      まだ完全に理解できていないので、なぜこれでできなかったのかなど、詳細はここでは飛ばします。

 

      うまくいかなかったので元に戻しておきます。sys.path.appendで追加したものを削除するには、sys.path.removeらしいです。
>>> sys.path.remove("/usr/local/lib/python3.4/site-packages")
>>> print(sys.path)
['', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python34.zip', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin', '/usr/local/Cellar/python3/3.4.3_2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/lib-dynload']          #きちんと消えています。

 

    1. .bashrcへ追加してみる。
    2. .bashrcへ追加してみるといいよ的な情報もあった気がするので、とりあえず以下のようなコマンドを打ってみました。
hiroshi-no-MacBook-Air:~ hiroshi$ echo "export PATH=\$PATH:/usr/local/Cellar/opencv3">>~/.bashrc
hiroshi-no-MacBook-Air:~ hiroshi$ source ~/.bashrc

 

      どうやら実際は、PYTHONPATHというところに追加しなければいけませんが、詳細はここでは省略。
    1. cv.pyのコピー ・ペースト
    2. これは、どこかの情報にあったわけではないですが、自分で考えて試してみた方法。

 

      /usr/local/Cellar/opencv/2.4.12/lib/python2.7/site-packagesの配下にあるcv.pyをコピーして、/usr/local/Cellar/opencv3/3.0.0/lib/python3.4/site-packagesに貼り付けるという操作です。

 

      Finderを開き、Shift+Command+Gを押すと絶対パスを入力できるボックスがでる。そこに/usr/local/Cellar/opencv/2.4.12/lib/python2.7/site-packagesと入力してreturnを押すと該当のフォルダへ移動する。



      /usr/local/Cellar/opencv/2.4.12/lib/python2.7/site-packagesフォルダの中身。cv.pyがあるので、これをコピー。




      /usr/local/Cellar/opencv3/3.0.0/lib/python3.4/site-packagesの中身。ここにコピーしたcv.pyを貼り付け。

      多分わかっている人からみると、かなりトンチンカンなことをしているようにみえると思いますが、恥も晒しておこうと思います。なんでこんなことをしようと思ったかというと、一つは、なんとなくではありますが、site-packagesの中にpythonのモジュールが入っているとわかっていたことと、もう一つはOpenCVの実際のファイルがcv.pyだと思っていたこと、それとシンボリックリンクなどの概念がごちゃごちゃになっていたために行った操作です。書いてみて思いましたが、そもそもモジュールとかsite-packegesについて理解不足ですよね。

 

    やってみたはいいもののうまくいかなかったのでその場合はもとに戻しましょう。貼り付けをしたcv.pyを削除しておきましょう。

大体試してみたのはこんなところでしょうか。
ところどころ、詳細は省略、として試してみたことだけざっと書きました。忘れないうちに。
飛ばしたところは、もう少し精査してまた書こうと思います。