Visual Studio Codeでライブラリやモジュールが could not be resolved になる時の対処法

Visual Studio Codeでライブラリやモジュールが could not be resolved になる時の対処法

StartLabでDjangoを使ったアプリ開発を紹介していますが、稀にDjangoがエラーになってしまう場合があります。
これはVSCode(Visual Studio Code)で起こり得るエラーなので、VSCode上での対処法をご紹介します。

講師
講師
VSCodeでDjangoがエラーを起こしている状態

上の参考画像では、エラーの内容としてModuleNotFoundErrorが表示されていますが、
今回の事象が表示するエラーは、
Import “django” could not be resolved from source Pylance(report MissingModuleSource)
のようになることが多いです。

講師
講師

もちろんDjangoのインストールを忘れていたのであればエラーが発生しても理解が出来るのですが、
Djangoをインストールしていてもこの事象が起きる場合があります。

講師
講師

原因

この事象はVSCodeがモジュールを探す段階で発生している。
Pythonからはアクセスが出来ているが、VSCodeからそのモジュールに対してアクセスが出来ていない状態

原因としては上記のみです!
なので対処法としては、
VSCodeがDjangoモジュールを探せるように設定を追加してあげましょう。
今回はDjangoモジュールで紹介していますが、他のモジュールでも同様のエラーが発生する場合もありますので、その際はこの記事を参考にしてください。

講師
講師

Djangoモジュールのディレクトリ確認

まずはインストールしたDjangoがどこにあるのかを見てみましょう。
VSCodeのターミナルで対話モードに入ります。
対話モードの入り方は、
ターミナルで下記コマンド実行です。
【Windows】
python
【Mac / Linux】
python3

講師
講師
Windows端末でpythonコマンドを実行して対話モードを開いた状態

参考画像はWindows端末を使用しています。
ターミナルの左側に>>>が表示されていれば対話モードになっている状態です。
この>>>以降に処理を記載していきます。

まず import django と入力してEnterを押します。

講師
講師
対話モードでimport django

次に、
print(django.__file__)
と入力してEnterを押します。
fileの前後には_(アンダーバー)が2つずつ必要なので注意してください。
実行するとDjangoモジュールの場所(ディレクトリパス)が表示されます。

講師
講師
対話モードでprint(django.__file__)

上の参考画像では、
C:\Users\mk012\Desktop\sample\venv\lib\site-packages\django__init__.py
と表示されている部分がDjangoのディレクトリパスです。
このパスのsite-packagesまでをコピーしておきましょう。
参考ですと、
C:\Users\mk012\Desktop\sample\venv\lib\site-packages\
までですね。

講師
講師

VSCodeの設定追加

次にVSCodeの設定を行っていきます。
メニューバーから、
「ファイル」→「ユーザー設定」→「設定」を選んでください。
英語表記の場合は、
「Code」→「Preference」→「Settings」です。

設定(Settings)を開くと次のような画面になります。

講師
講師
VSCode設定画面

画面上部の
「設定の検索」(英語表記の場合はsearch settings)

extra path
と入力しEnterを押してください。

講師
講師
extra path の検索結果

検索を行うといくつか表示されますが、
今回使用するのは、
Python > Analysis: Extra Paths
の部分です。

Python > Analysis: Extra Paths の下の、
「項目の追加」(英語表記の場合はAdd Item)
をクリックしてください。

講師
講師
「項目の追加」(Add Item)をクリックした状態

クリックすると、入力欄が表示されます。
ここに先程コピーしたDjanogのディレクトリパスを入力してください。
参考では、
C:\Users\mk012\Desktop\sample\venv\lib\site-packages\
でしたね。
入力したら「OK」をクリックしましょう。

講師
講師
ディレクトリパスを入力しOKをクリックした状態

Python > Analysis: Extra Pathsの下部に、先程入力したパスが表示されていますね。
このような表示になればOKです!

講師
講師

これでVSCodeが正しくDjanogモジュールを見付けることが出来るようになりました!
後は、ファイルの中でdjango部分の黄色の波線が消え、プロジェクトが実行できるか動作確認を行えば解決です。

厳密にはこの事象はエラーではないのですが、
VSCodeでのモジュールへのアクセス指定方法として覚えておくと、いざ問題が発生した時に落ち着いて対処できます。
折角なのでこの機会に身に付けておきましょう!

講師
講師

まとめ

Import “〇〇〇 ” could not be resolved from source Pylance(report MissingModuleSource) エラーはVSCodeの読み込みエラーが原因

・モジュールのディレクトリパスを、直接VSCodeに設定してあげる必要がある。

・Django以外のモジュールにも同様の対応が可能