はじめに
今回の記事は題名の通りlzma moduleがないと怒られ, エラーが出た時の対処方法について書きます.
と言っても, 私が試した方法はその場しのぎなので根本的な解決になっていない様な気しかしないですが...
何はともあれ, この方法でエラーは取り消せたので未来の自分と, 同じく困っている人の一助になればと思い記します.
私はこのNo module named '_lzma'のエラーはpandasとscikit-imageをimportする際にでました. 大学の実験や案件でpythonを取り扱う時にこのエラーに遭遇して初めての時は色々苦しみました...
実行環境は次の通りです
実行環境
MacOS Mojave 10.14.6
Python 3.6.5 (pyenv)
(その場しのぎの)対処法
一言で言ってしまえば, importエラーが出ているmoduleのversionを変更することで対処します.
(もうこの一文でその場しのぎ感が伝わってくる様な...)
と言っても, どのverでエラーが出てどのverだとエラーが出ないのかわかりませんね.
私はエラーが出ていない友人や先輩のverを調べて, それをinstallすることで対処しました.
この記事ではエラーが出たmoduleのverとエラーが出なくなった際のverについて記載して行こうと思います.
pandasで遭遇した際の対処
参考文献1で示した方法と同じなのですが, エラーが出た際のpandasのversionはpandas 0.25.0でした.
そのため, pandasのversionをpandas 0.25.1に変更するとNo module named '_lzma'は出力されなくなりました.
scikit-imageで遭遇した際の対処
エラーがでた際のscikit-imageのverはscikit-image 0.17.2でした.
これをscikit-image 0.14.0で再インストールすると, No module named '_lzma'は出力されなくなりました.
これで記事の目的は達成しているのですが, 別のエラーが出たため, それの対処方法も記しておこうと思います.
scikit-image 0.14.0で実行するとこのエラーcannot import name '_validate_lengths'が出力されました.
調べてみると, scikit-image 0.14.2では修正されているようです(参考文献3より)
他の対処方法
参考文献1と参考文献2でも紹介されているように, pyenvでpythonを入れ直したり, versionアップを行うと治ることもあるようです. 詳しくは参考文献を参照してみてください.
moduleのversion指定 pip install
// pipでのパッケージ(module)のversion指定インストール方法
$ pip install パッケージ名==version
// 例
$ pip install scikit-image==0.14.2
他のpipコマンド, 現在installされているversionの確認などは参考文献4を参照してみてください.
最後に
python使って2年間しか?も?経ちましたが...version管理難しいですね. 一部のmoduleのversionを変更すると他のmoduleのimportが上手くいかなくなるなどなど.
そもそも, pyenv環境を構築するのも色々苦労した...pythonとっても便利なんですけど.
この記事を読んで少しでも問題解決に役立ったのなら幸いです. 立たなかったらごめんなさい.
参考文献
1. pandasのversion0.25.0でimportエラーが起きる
2. pyenvのpython環境で'_lzma'が存在しなかった時の対応メモ
3. cannot import name '_validate_lengths'
4. pipでアップデートするときのコマンド pip update