※結果的には単なる仮想環境指定のミスでした。しかし解決に繋がる事も書いてあります。
起こったこと
Kerasを用いた開発を前からやっていたのですが、新しいことをやりたくなって、とある記事(どの記事か思い出せない)通りに色々pipで入れてたら、今まで動いてた機械学習系の成果物が動かなくなってしまった
目次
- 原因
- 対策
何が原因なのだろう
pipで余計なものを入れすぎた
数日間エラー解決できず、どこのページを参考にしてライブラリとか入れたのか思い出せないが、とにかく"何かしらのライブラリが邪魔をしてしまってる"と考えた。
解決までの道のり
ざっくり言うと、anacondaのコマンドとかpipとかでモジュールいれて、sysとかpythonpathでパスを通せばいい。下記は、いろいろ試行錯誤した流れ。
成果物のpythonプログラムを実行したら、「importerror: cannot import name keras.models」みたいなエラーが出て、「え、今まで動いてたやん、、、Keras入ってるんだけど」って思った。
動いてた時点のtensorflowやkerasのバージョンを戻したり、それ関係のものをインストールし直したりした。
↓
pythonを起動
↓
anacondaに入れたkerasのパスを、sysでパスを通した
↓
コマンドでkerasをインポートして、kerasのパスを調べた。
↓
おそらく、pipで色々入れまくった影響でパスがおかしくなってた。
↓
そのkerasフォルダの中にmodelsフォルダがなかったので、他のkerasフォルダからmodelsフォルダをコピーして、そのフォルダの中に入れた。
↓
「importerror: cannot import name 'clone_model'」と新たにエラーがでた。ググってもわからなかったけど、予想ではさっきmodelsフォルダをコピーして入れたから、cloneと言われた??(わからないけど名推理)
↓
さっきコピーしたフォルダに問題があるなら取り除くか〜って思って取り除いて再度成果物を実行してみたら何故か動くようになった。(どこかのタイミングでエラー改善のきっかけになったのかな、、、)
トライアンドエラーしまくって色々試しまくったので、何故うまくいったのか説明できないのが情けないです、、、(すいません)
原因が分かった。
最初に普通にPython起動して普通にkerasインポートしてエラー出てたので、パスを通した時点で直ったと思います。
ただ、僕の場合は恥ずかしながらpython実行する際の仮想環境指定が間違ってただけのイージーミスでした・・・
このエラーが出た時は、関係のない仮想環境を指定して、実行してた。そりゃその仮想環境にはKerasとか入れてないから、importError出るよなって思った。
今回のエラーと戦ってる際は、関係のないとある仮想環境が正しいと誤って思い込んでしまって再度いろんなモジュールとか入れたり無駄なことをしてしまいました。。。(1ヶ月pythonから離れただけで忘れた)
なので、今まで普通に動いてたのに、なんで急にimportできなくなった!?って時は、正しい仮想環境を指定しているかを確認するのもいいかもしれません(僕の場合はこのイージーミスで2日間ぐらい戦ってました、、、)
感想
違う仮想環境にまた同じモジュールを入れてしまったみたいで、つら。。。動くようになったから嬉しいけど。。。
Pythonは厄介