このページでは VSCode で Python スクリプトを実行した際に下記のエラーが発生する原因と解決策について解説していきます。
ModuleNotFoundError: No module named 'モジュール'
通常、上記のエラーは、import モジュール
で import
を試みたモジュールが Python にインストールされていない場合に発生します。また、モジュール
部分にスペルミスがある場合も同様に上記のエラーが発生することになります。
そのため、上記のエラーが発生した場合は、まず import モジュール
で import
を試みたモジュールが Python にインストールされているかどうか、さらに モジュール
で指定したモジュール名にスペルミスが無いかどうかを確認すればよいです。
ただ、VSCode から Python を実行する場合は、import モジュール
で import
を試みたモジュールが Python にインストールされていても、さらに モジュール
で指定したモジュール名にスペルミスが無くても上記のエラーが発生することがあります。また、コマンドで実行したり IDLE で実行する場合はエラーが発生しないのに、VSCode 実行するとエラーが発生することがあります。不思議ですね…。
このページでは、その原因と解決策について解説していきます!
Contents
原因:”VSCode で利用する Python” の設定が間違っている
では、下記エラーが発生する原因について解説していきます。
ModuleNotFoundError: No module named 'モジュール'
結局、このエラーが発生するのは import
を試みたモジュールが Python にインストールされていないことが原因です。
これを聞いて、
と思った方もおられるでしょう。その場合、このエラーが発生する原因は下記である可能性が高いです。
特に、VSCode 以外から Python を実行したときにはエラーが出ないのに、VSCode から実行した場合のみエラーになってしまうというのであれば、VSCode で利用する Python が、いつも使用している Python とは異なるものに設定されてしまっていることが原因であると言い換えることができます。
ここからは、この原因についての補足を行い、その後に解決策について解説していきます。ここまでの説明で原因が理解できた方は、解決策:”VSCode で利用する Python” の設定を修正する までスキップして解決策を実施していただければと思います。
VSCode で Python スクリプトが実行される仕組み
では、原因の補足をしていきます。
まず前提として、VSCode の実体は単なるエディターで、VSCode 自体に Python の機能が存在するというわけではありません。PC に別途インストールされた Python の本体(以降 Python インタプリターと呼びます)を VSCode から利用することで、Python スクリプトを VSCode から実行できるようになっています。
また、PC 内には複数の Python インタプリターをインストールすることが可能です。この場合、VSCode からは、どの Python インタプリターが選択されることになるでしょうか?
この答えは「VSCode の設定によって決まる」になります。
VSCode では、Python スクリプトを実行するときに利用する Python インタプリターを設定することができるようになっています。この設定に基づき、VSCode で利用する Python インタプリターが選択されるようになっています。
つまり、この設定が間違っていると、あなたが使用したいと思っている Python インタプリターとは異なる Python インタプリターが VSCode から利用されることになります。
スポンサーリンク
Python インタプリターとモジュールの関係性
さらに、Python のモジュールは個々の Python インタプリターに対してインストールされることになります。つまり、PC 内に複数の Python インタプリターが存在する場合、特定の Python インタプリターに対して pip
等でモジュールをインストールしたとしても、他の Python インタプリターではそのモジュールを利用することはできません。モジュールは、あくまでもインストールを行った Python インタプリターでのみ利用可能になります。
つまり、一度モジュールをインストールしたからと言って、PC 内の Python インタプリター全てがそのモジュールを import
できるというわけではないのです。モジュールを import
するためには、そのモジュールをインストール済みの Python インタプリターを利用して Python スクリプトを実行する必要があります。
VSCode で利用する Python の設定が間違っているとエラーが発生
こういった仕組みで VSCode や Python が動作するため、VSCode から Python スクリプトを実行して特定のモジュールを import
するためには、VSCode で利用する Python インタプリターとして、そのモジュールをインストール済みの Python インタプリターを設定しておく必要があります。
この設定が間違っていると、import
を試みたモジュールがインストールされていない Python インタプリターが VSCode から利用されることになり、その場合は VSCode で Python スクリプトを実行するとエラーが発生することになります。
また、コマンドで Python を実行した場合はエラーが出ないのに VSCode から実行するとエラーが発生してしまうのであれば、VSCode から利用される Python インタプリターが、いつも使用している Python インタプリターと異なるものになってしまっている可能性が高いです。
このように、VSCode で利用する Python の設定が間違っていると、import
しようとしたモジュールがインストールされていない Python インタプリターが VSCode から利用され、それによって下記のエラーが発生することになります。
ModuleNotFoundError: No module named 'モジュール'
解決策:”VSCode で利用する Python” の設定を修正する
原因が「“VSCode で利用する Python の設定” が間違っている」なのであれば、解決策は下記になりますね!
VSCode では、VSCode で利用する Python インタプリターの設定を変更できるようになっています。なので、”import
したいモジュールをインストール済みの Python インタプリター” が利用されるように設定を変更を変更してやればエラーが解決できることになります。
スポンサーリンク
Python インタプリターの設定変更手順
具体的な手順は次のようになります。
まず VSCode を起動し、さらに Python スクリプト(拡張子が .py
のファイル)を VSCode から開きます。
Python スクリプトを開けば、ウィンドウ最下部のバーに Python という文字が表示され、その隣に「Python インタプリターのバージョン」が表示されているはずです。次は、そのバージョンをクリックします。
クリックすると画面上部に インタプリターの選択
ウィンドウが表示されるはずです。このウィンドウの下側には、VSCode が自動的に見つけてくれた Python インタプリターのバージョンやパスがリストアップされているはずで、ここに “import
したいモジュールをインストール済みの Python インタプリター” がリストアップされていれば、それを選択してください。これで、VSCode で利用する Python インタプリターの設定が修正できたことになります。
もしリストアップされていないのであれば、インタプリター パスを入力
をクリックし、それによって表示される入力欄に Python インタプリターのパスを直接入力してください。この手順でも VSCode で利用する Python インタプリターの設定を修正することが可能です。
以上の操作により、VSCode から使用される Python インタプリターが “import
したいモジュールをインストール済みの Python インタプリター” に変更され、VSCode で Python を実行する時に下記のエラーが発生しなくなるはずです。
ModuleNotFoundError: No module named 'モジュール'
Python インタプリターのパスの調べ方
手順は分かったけど、「Python インタプリターのパスの調べ方が分からない…」という方もおられると思いますので、この点について補足しておきます。
いつも使用している Python インタプリターのパスは、いつもコマンドで Python を実行しているのであれば which
や where.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 をインストールしているような場合は、上記の原因によってエラーが発生する可能性がありますので注意してください。