【VSCode/Python】No module named ‘モジュール’が発生する問題の原因と解決策(ModuleNotFoundError)

No module name 'モジュール'がVSCodeで発生する原因と解決策の解説ページアイキャッチ

このページにはプロモーションが含まれています

このページでは VSCode で Python スクリプトを実行した際に下記のエラーが発生する原因と解決策について解説していきます。

ModuleNotFoundError: No module named 'モジュール'

通常、上記のエラーは、import モジュールimport を試みたモジュールが Python にインストールされていない場合に発生します。また、モジュール 部分にスペルミスがある場合も同様に上記のエラーが発生することになります。

そのため、上記のエラーが発生した場合は、まず import モジュールimport を試みたモジュールが Python にインストールされているかどうか、さらに モジュール で指定したモジュール名にスペルミスが無いかどうかを確認すればよいです。

ただ、VSCode から Python を実行する場合は、import モジュールimport を試みたモジュールが Python にインストールされていても、さらに モジュール で指定したモジュール名にスペルミスが無くても上記のエラーが発生することがあります。また、コマンドで実行したり IDLE で実行する場合はエラーが発生しないのに、VSCode 実行するとエラーが発生することがあります。不思議ですね…。

このページでは、その原因と解決策について解説していきます!

原因:”VSCode で利用する Python” の設定が間違っている

では、下記エラーが発生する原因について解説していきます。

ModuleNotFoundError: No module named 'モジュール'

結局、このエラーが発生するのは import を試みたモジュールが Python にインストールされていないことが原因です。

これを聞いて、

いや、確実にインストールはしたんだけど…

VSCode でなくコマンドで実行したらエラーは発生しないんだけど…

と思った方もおられるでしょう。その場合、このエラーが発生する原因は下記である可能性が高いです。

エラーの原因
“VSCode で利用する Python の設定” が間違っている

特に、VSCode 以外から Python を実行したときにはエラーが出ないのに、VSCode から実行した場合のみエラーになってしまうというのであれば、VSCode で利用する Python が、いつも使用している Python とは異なるものに設定されてしまっていることが原因であると言い換えることができます。

ここからは、この原因についての補足を行い、その後に解決策について解説していきます。ここまでの説明で原因が理解できた方は、解決策:”VSCode で利用する Python” の設定を修正する までスキップして解決策を実施していただければと思います。

VSCode で Python スクリプトが実行される仕組み

では、原因の補足をしていきます。

まず前提として、VSCode の実体は単なるエディターで、VSCode 自体に Python の機能が存在するというわけではありません。PC に別途インストールされた Python の本体(以降 Python インタプリターと呼びます)を VSCode から利用することで、Python スクリプトを VSCode から実行できるようになっています。

VSCodeからPythonスクリプトが実行される仕組みを説明する図

また、PC 内には複数の Python インタプリターをインストールすることが可能です。この場合、VSCode からは、どの Python インタプリターが選択されることになるでしょうか?

この答えは「VSCode の設定によって決まる」になります。

VSCode では、Python スクリプトを実行するときに利用する Python インタプリターを設定することができるようになっています。この設定に基づき、VSCode で利用する Python インタプリターが選択されるようになっています。

VSCodeから利用されるPythonインタプリターはVSCodeの設定に基づいて選択されることを示す図

つまり、この設定が間違っていると、あなたが使用したいと思っている Python インタプリターとは異なる Python インタプリターが VSCode から利用されることになります。

スポンサーリンク

Python インタプリターとモジュールの関係性

さらに、Python のモジュールは個々の Python インタプリターに対してインストールされることになります。つまり、PC 内に複数の Python インタプリターが存在する場合、特定の Python インタプリターに対して pip 等でモジュールをインストールしたとしても、他の Python インタプリターではそのモジュールを利用することはできません。モジュールは、あくまでもインストールを行った Python インタプリターでのみ利用可能になります。

モジュールのインストールが各Pythonインタプリターに個別に行われることを説明する図

つまり、一度モジュールをインストールしたからと言って、PC 内の Python インタプリター全てがそのモジュールを import できるというわけではないのです。モジュールを import するためには、そのモジュールをインストール済みの Python インタプリターを利用して Python スクリプトを実行する必要があります。

VSCode で利用する Python の設定が間違っているとエラーが発生

こういった仕組みで VSCode や Python が動作するため、VSCode から Python スクリプトを実行して特定のモジュールを import するためには、VSCode で利用する Python インタプリターとして、そのモジュールをインストール済みの Python インタプリターを設定しておく必要があります。

import対象のモジュールをインストール済みのPythonインタプリターが利用されるようにVSCodeを設定しておく必要があることを示す図

この設定が間違っていると、import を試みたモジュールがインストールされていない Python インタプリターが VSCode から利用されることになり、その場合は VSCode で Python スクリプトを実行するとエラーが発生することになります。

VSCodeの設定によってはimportしようとしているモジュールが未インストールのPythonインタプリターが利用されてしまうことを示す図

また、コマンドで Python を実行した場合はエラーが出ないのに VSCode から実行するとエラーが発生してしまうのであれば、VSCode から利用される Python インタプリターが、いつも使用している Python インタプリターと異なるものになってしまっている可能性が高いです。

このように、VSCode で利用する Python の設定が間違っていると、import しようとしたモジュールがインストールされていない Python インタプリターが VSCode から利用され、それによって下記のエラーが発生することになります。

ModuleNotFoundError: No module named 'モジュール'

解決策:”VSCode で利用する Python” の設定を修正する

原因が「“VSCode で利用する Python の設定” が間違っている」なのであれば、解決策は下記になりますね!

エラーの解決策
“VSCode で利用する Python の設定” を修正する

VSCode では、VSCode で利用する Python インタプリターの設定を変更できるようになっています。なので、”import したいモジュールをインストール済みの Python インタプリター” が利用されるように設定を変更を変更してやればエラーが解決できることになります。

解決方法を示す図

スポンサーリンク

Python インタプリターの設定変更手順

具体的な手順は次のようになります。

まず VSCode を起動し、さらに Python スクリプト(拡張子が .py のファイル)を VSCode から開きます。

VSCodeで利用するPythonインタプリターの設定手順1

Python スクリプトを開けば、ウィンドウ最下部のバーに Python という文字が表示され、その隣に「Python インタプリターのバージョン」が表示されているはずです。次は、そのバージョンをクリックします。

VSCodeで利用するPythonインタプリターの設定手順2

クリックすると画面上部に インタプリターの選択 ウィンドウが表示されるはずです。このウィンドウの下側には、VSCode が自動的に見つけてくれた Python インタプリターのバージョンやパスがリストアップされているはずで、ここに “import したいモジュールをインストール済みの Python インタプリター” がリストアップされていれば、それを選択してください。これで、VSCode で利用する Python インタプリターの設定が修正できたことになります。

VSCodeで利用するPythonインタプリターの設定手順3

もしリストアップされていないのであれば、インタプリター パスを入力 をクリックし、それによって表示される入力欄に Python インタプリターのパスを直接入力してください。この手順でも VSCode で利用する Python インタプリターの設定を修正することが可能です。

VSCodeで利用するPythonインタプリターの設定手順4

以上の操作により、VSCode から使用される Python インタプリターが “import したいモジュールをインストール済みの Python インタプリター” に変更され、VSCode で Python を実行する時に下記のエラーが発生しなくなるはずです。

ModuleNotFoundError: No module named 'モジュール'

Python インタプリターのパスの調べ方

手順は分かったけど、「Python インタプリターのパスの調べ方が分からない…」という方もおられると思いますので、この点について補足しておきます。

いつも使用している Python インタプリターのパスは、いつもコマンドで Python を実行しているのであれば whichwhere.exe によって調べることが可能です。より具体的には、いつも python ファイルパス のコマンドで Python を実行している場合、python によって起動する Python インタプリターのパス、すなわち、いつも使用している Python インタプリターのパスは下記のコマンドによって調べることができます。コマンドの最初の >$ は入力不要です。(python ではなく python3 等の python とは異なるコマンドで Python スクリプトを実行している場合は、python 部分を、そのいつも使用しているコマンド名に変更してください)

Windows の場合:

Windows の場合は where.exe を利用することで、引数に指定したコマンドの実体となるファイルのパスを出力することが可能です。

> where.exe python
C:\Users\daeud\AppData\Local\Microsoft\WindowsApps\python.exe

Mac / Linux の場合:

Mac や Linux の場合は which を利用することで、引数に指定したコマンドの実体となるファイルのパスを出力することが可能です。

$ which python
/usr/bin/python3

これらを実行することで、いつも使用している Python インタプリターのパスを調べることができますので、後は前述の手順で VSCode から使用する Python インタプリターのパスを変更してやれば、ページの冒頭で示したエラーは解消できるはずです。

まとめ

このページでは、VSCode で Python スクリプトを実行した際に下記のエラーが発生する原因と解決策について解説しました!

ModuleNotFoundError: No module named 'モジュール'

もちろん、単純に import を試みたモジュールがインストールされていない場合や、モジュール名のスペルが間違っている場合にも上記のエラーが発生することになるのですが、このエラーが VSCode から Python スクリプトを実行したときにのみ発生するのであれば、VSCode で利用する Python の設定が間違っている可能性が高いです。

そのため、VSCode で利用する Python の設定を変更し、そのモジュールがインストールされている Python が VSCode から利用されるようにしてやればエラーは解決します。

特に PC 内に複数のバージョンの Python をインストールしたり、仮想環境を用意して Python をインストールしているような場合は、上記の原因によってエラーが発生する可能性がありますので注意してください。

同じカテゴリのページ一覧を表示

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です