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
0 件のコメント:
コメントを投稿