SageMakerでModuleNotFoundError: No module named 'cv2'に対応する
SageMakerのノートブックインスタンスでopencvを使おうとすると、
ModuleNotFoundError: No module named 'cv2' のエラーがでてしまい使えません。
使えるようにする方法をいくつか試してみました。
どうしてこの手順で使えるようになるか細かい事は、説明できないところもあり省いています。
環境
- anacondaの環境は、conda_tensorflow_p36です。
- notebookのインスタンスは、ml.t2.mediumです。
方法1 - AWS Consoleのjupyterから入れる
この方法が今のところ最善と思っています。
下画面のように、インストールする環境を選択し、必要なライブラリをチェックしてインストールできます。
実行すると、数分後にエラーが表示されます。
「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使う事ってまれなのでしょうか。。
Author And Source
この問題について(SageMakerでModuleNotFoundError: No module named 'cv2'に対応する), 我々は、より多くの情報をここで見つけました https://qiita.com/naghoro/items/08e02bf6724c71bd6865著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .