CSLAIERでツールインストール後に出るエラー「ImportError: No module named cv2」の対応

2017年5月21日

サーバー テクノロジー

SONYの作ったDeepLearningのOSS「CSLAIER」、非常に簡単に画像認識の機械学習が行えるとのことで、とりあえず、インストールして環境構築しようと作業を薦めていた所、 インストールが完了して、いざ起動して無事にデフォルトの8080ポートでターミナルで待受状態になったのでブラウザでアクセスしてみたところ、
Internal Server Error
と表示されて、ターミナルでもエラーが出ていたので、それに対応した経過をメモしておきます。

環境

もともと、会社のオンプレサーバーとして使っていて、古くなったから使われなくなった機材をもったいないので機械学習用の環境として構築しようと考えた。 業務用WEBサーバーの為、GUIなどがなく、もちろんGPUなどは搭載されていないので、思い切ってCentOSを入れてみることにした。 メモリは8MBでHDDは256GBぐらい搭載されている。 CPUは、IntelのCorei5ぐらいで、まあまあのスペックだが、機械学習で使うにはあまりにも非力と認識している。 でも、とりあえずラズパイ使うよりはいいや・・・という感覚。

問題発生

画面に「Internal Server Error」と出ている時、ターミナルには以下のメッセージ。
ImportError: No module named cv2
という文字が出ていた・・・これはどうやらOpenCVがPythonでInstallできないというエラーである。 通常のWEBサーバーであれば、InternalServerErrorは500番エラーという事でCGIエラーやパーミッションの不具合なのだが、 今回は「CSLAIER」というツールで動いているのでApacheもNginxも立ち上がっていない状態。 Pythonでの不具合であることは間違いない。

OpenCVの対応

実はインストールは完了していたOpenCVがPythonにパスが通っていないという事が分かった。 対応としては、ググればすぐに出てきますが「/usr/local/lib/python2.7/site-packages」という階層がPYTHONPASSのデフォルトディレクトリに入っていない事が原因とのこと。 以下の操作で、確認、追加を行うことで、対応完了できた。 $ python >>> import sys >>> print sys.path >>> sys.path.append("/usr/local/lib/python2.7/site-packages") 上記でOK。これで、cv2をimportしてみてエラーが出なければOK >>> import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named cv2  あれ?まだエラーが出る・・・ 「cv2.so」ファイルは存在するのに・・・ そして、どうやらpythonモジュールとしてインストールされていなかったらしい。 $ pip install opencv-python これでどうやら、うまくいったらしい。 >>> import cv2 >>> しかし、このままでは、再起動などをすると、また元に戻ってしまうので、PYTHONPASSをログインしてもこの状態にするために、以下を実行 $ vi ~/.bashrc # 以下を追記 export PYTHONPATH=/usr/local/lib/python2.7/dist-packages:$PYTHONPATH

参考ページ

http://pandazx.hatenablog.com/entry/2016/04/06/131834 http://stackoverflow.com/questions/19876079/opencv-cannot-find-module-cv2

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ