こんにちは!データサイエンティストの青木和也(https://twitter.com/kaizen_oni)です!
今回の記事ではpip install/conda installしたはずなのに、なぜか「ModuleNotFoundError: No module named ‘xxxxx’」となってしまった時の対処法を紹介いたします!
ModuleNotFoundErrorの原因は?
ちゃんとpip installやconda installでインストールしたはずなのに、実行してみるとModuleNotFoundErrorになる原因はなんなのでしょうか?
ずばり、その原因はあなたのPC上に複数のPythonのバージョンがインストールされていることによります。
Pythonを使って作業をしていると、ライブラリとPythonバージョンの非対応などの問題から、ダウングレード版のPythonをインストールしたり、「conda create -n xxxx python=3.10」のように仮想環境を作ったりすることがあるかと思います。
今回の「入れたはずなのに入ってないって言われる」エラーはそのような作業の結果として、PC上に複数のバージョンのPythonが存在することによって、「今作業しているバージョンのPythonじゃないPythonに入れちゃった」ということが原因になります。
エラーに対する対処方法は?
エラーの原因が分かれば対処方法は簡単です。
次の2つのステップで正しい環境にライブラリのインストールを行います。
- 現在のPythonの実行環境をsys.executableで確認する
- 実行環境を指定した上でpip install(またはconda install)を行う
解決コード
実際には以下のコードを実行してライブラリを現在実行している環境にインストールします。
なお、Jupyter notebookでの実行を想定していますが、VSCodeなどのエディタを使用している場合は、最後の行の命令を「!」を取り除いた状態でターミナル(またはコマンドプロンプト)で実行してください。
import sys
print(sys.executable)
! [上記で出力されたPythonのフルパス] -m pip install [インストールしたいライブラリ名]
以下で少しずつコードの意味するところを読み解いていきます。
コード解説
まずは以下のコードでsysライブラリをインポートします。
import sys
次に以下のコードで、現在のコードの実行に使っているPythonの実行ファイルの絶対パスを引っ張り出してきます。
print(sys.executable)
これであなたのパソコンの中に複数のPython実行ファイルがあったとしても「今どのPython実行ファイルを実行しているのか」を知ることができるわけです。
最後に、以下のコードで今実行しているPythonにあなたがインストールしたいライブラリをインストールします。
! [上記で出力されたPythonのフルパス] -m pip install [インストールしたいライブラリ名]
なお、上記のように!(びっくりマーク)をつけてpipを実行できるのはJupyter notebookなどのnotebook系のみなので、実行環境がVSCodeなどのIDE(統合開発環境)の場合はターミナルやコマンドプロンプトなどで以下のコードを実行してください。
[上記で出力されたPythonのフルパス] -m pip install [インストールしたいライブラリ名]
なお、フルパスの後についている「-m」はコマンドプロンプトやターミナルでPythonを実行する場合につけるオプション句です。
ですので、カレントディレクトリに「train.py」というPythonスクリプトがある時、ターミナルやコマンドプロンプトにおいては以下の2つのコードは同じ意味を持ちます。
python train.py
python -m train
まとめ
今回の記事では、pip install/conda installしたはずなので、なぜか「モジュールがないよ?」というエラーが出る時の対処法について解説いたしました。
コメント