LoginSignup
1
1

More than 5 years have passed since last update.

SageMakerでModuleNotFoundError: No module named 'cv2'に対応する

Posted at

SageMakerのノートブックインスタンスでopencvを使おうとすると、
ModuleNotFoundError: No module named 'cv2' のエラーがでてしまい使えません。
使えるようにする方法をいくつか試してみました。
どうしてこの手順で使えるようになるか細かい事は、説明できないところもあり省いています。

環境

  • anacondaの環境は、conda_tensorflow_p36です。
  • notebookのインスタンスは、ml.t2.mediumです。

方法1 - AWS Consoleのjupyterから入れる

この方法が今のところ最善と思っています。
下画面のように、インストールする環境を選択し、必要なライブラリをチェックしてインストールできます。

Screen Shot 2019-02-11 at 13.04.27.png

実行すると、数分後にエラーが表示されます。
「Error Installing Packages
An error occurred while installing packages.
Unexpected end of JSON input」
しかし、インストールは完了しているようなので、この状態でノートブックからimportします。

import cv2

このときライブラリのバージョンが違うエラーが出るので、下記のように実行してOSにインストールされているバージョンを参照するようにします。

!を付けることで、ノートブックから実行することができます。

!mv /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0 /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0.bk
!ln -s /usr/lib64/libgomp.so.1 /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0

これで無事使えることができました。

方法2 - ターミナルからconda installで入れる

jupyterのターミナルからanacondaのコマンドでインストールすることができます。
ただし、この方法ではインストールに3時間以上かかったため、あまりオススメできません。

conda install -n tensorflow_p36 -c conda-forge opencv

方法1と同様に、バージョン違いによるエラーが出るので、OSに入っているバージョンの方を参照させます。

!mv /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0 /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0.bk
!ln -s /usr/lib64/libgomp.so.1 /home/ec2-user/anaconda3/envs/tensorflow_p36/lib/libgomp.so.1.0.0

これで無事使えることができました。

課題

どちらの方法も使えるのようにはなるのですが、インスタンスを停止すると次起動するときは、もう一度インストールし直しになります。
方法1だと、そこまで時間はかからないとはいえ少し面倒です。
SageMakerでopencv使う事ってまれなのでしょうか。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1