ここからネットの情報を調べながら、色々と試行錯誤が始まりました。
その試行錯誤の過程で行なったことを記録していくわけですが、まずうまくいった操作を書いておきます。
うまくいった操作
結論からいうと、次の操作でうまくいきました。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をインポートできるようになりました。
このコマンドの意味や効果もある程度調べてみましたが、そのあたり詳細は、また別の機会に書きたいと思います。
うまくいかなかった操作
- sys.pathに追加してみる sys.pathというところにpythonがモジュールを探す探索場所が書かれているという噂だったので、次のようにしてみましたが、できませんでした。もっともあまり理解せずに行なったので、そもそもが、正しいコマンドを実行していたのはわかりませんが。
- .bashrcへ追加してみる。 .bashrcへ追加してみるといいよ的な情報もあった気がするので、とりあえず以下のようなコマンドを打ってみました。
- cv.pyのコピー ・ペースト これは、どこかの情報にあったわけではないですが、自分で考えて試してみた方法。
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'] #きちんと消えています。
hiroshi-no-MacBook-Air:~ hiroshi$ echo "export PATH=\$PATH:/usr/local/Cellar/opencv3">>~/.bashrc hiroshi-no-MacBook-Air:~ hiroshi$ source ~/.bashrc
どうやら実際は、PYTHONPATHというところに追加しなければいけませんが、詳細はここでは省略。
/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を削除しておきましょう。
ところどころ、詳細は省略、として試してみたことだけざっと書きました。忘れないうちに。
飛ばしたところは、もう少し精査してまた書こうと思います。
参考にしたページや文献・書籍
PythonでOpenCVを使おうとして ImportError: No module named cv って言われたら
Pythonで「ImportError: No module named …」が出た時の3つの対処法
Homebrew で OpenCV3 の Python バインディングを試す
MacでOpenCV2.1
Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法
Python---Macwiki
Pythonでデフォルトパスを追加する方法
[Python][お勉強] Python入門(35) - インポートの処理
Python - 別ディレクトリにあるファイルのインポート
PATHを通す方法
パスを通す
利用可能なモジュール一覧を取得する
パーミッションとは?
MacでのPATHの設定について質問があります---yahoo知恵袋
PythonでOpenCVを使おうとして ImportError: No module named cv って言われたら
Pythonで「ImportError: No module named …」が出た時の3つの対処法
Homebrew で OpenCV3 の Python バインディングを試す
MacでOpenCV2.1
Mac OS X で OpenCV 3 + Python 2/3 の開発環境を整備する方法
Python---Macwiki
Pythonでデフォルトパスを追加する方法
[Python][お勉強] Python入門(35) - インポートの処理
Python - 別ディレクトリにあるファイルのインポート
PATHを通す方法
パスを通す
利用可能なモジュール一覧を取得する
パーミッションとは?
MacでのPATHの設定について質問があります---yahoo知恵袋
0 件のコメント:
コメントを投稿