pip install したはずなのにNot Found moduleエラーが出る時の対処法

Python
元教師
元教師

こんにちは!データサイエンティストの青木和也(https://twitter.com/kaizen_oni)です!

今回の記事ではpip install/conda installしたはずなのに、なぜか「ModuleNotFoundError: No module named ‘xxxxx’」となってしまった時の対処法を紹介いたします!

時間がない人のための3行要約
  • エラーの原因はPC上に複数のバージョンのPythonが存在するから
  • print(sys.executable)で現在実行しているPythonのパスを確認
  • [Pythonのフルパス] -m pip install xxxxで現在実行しているPythonにインストールしたいライブラリがインストールされる

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したはずなので、なぜか「モジュールがないよ?」というエラーが出る時の対処法について解説いたしました。

コメント

タイトルとURLをコピーしました