VSCodeで自作モジュールのimportエラーを解消してみた

2020.10.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

DA事業本部の横山です。

Visual Studio CodeでPythonの開発を行う際に、初心者がハマりやすいimportエラーの解消方法について書いていきます。

結論

先に結論を書いておくと、settings.jsonpython.analysis.extraPathsに読み込みたいパスを追加することで解決できます。

確認環境

  • Python 3.8.2
  • VSCode 1.50.1
  • VSCodeのPython拡張機能

現象確認

以下のようなディレクトリ構成でコードを書いているとします。

$ tree
.
├── main.py          : importする側
├── same_dir.py      : importされる側
└── sample
    └── other_dir.py : importされる側

main.py

import same_dir
from sample import other_dir

same_dir.same_dir()
other_dir.other_dir()

same_dir.py

def same_dir():
    print('same_dir')

other_dir.py

def other_dir():
    print('other_dir')

この時、main.pyのimport文で以下のようなエラーになるはずです。

ちなみに実行してみてもエラーは発生しません。

$ python3 main.py 
same_dir
other_dir

これは、Pythonの実行時の探索パスとVSCodeが探索するパスが異なるためです。 問題なく実行できるとしてもこのままでは、コードジャンプはできませんし、AutoCompleteもできないため開発効率が落ちてしまいますよね?

VSCodeの設定を追加して、importエラーを解消しましょう。

VSCodeの設定を変更する

VSCodeのPython拡張機能には、探索対象のパスを追加するオプション(python.analysis.extraPaths)が存在するため、settings.json内で任意のパスを追加しましょう。

今回の例でいうと、以下のような設定を追加します。

settings.json

    "python.analysis.extraPaths": [
        "/home/yokoyama/target/path",
    ],

正しいパスが設定できたら、先ほどのimportエラーが解消されているはずです。 これで、コードジャンプやAutoCompleteが効くようになります。

プロジェクトで自作しているモジュールが全く違うディレクトリに存在する場合でも、この設定を行うことでコードジャンプやAutoCompleteが行えるようになるので困っている方は試してみてください。

最後に

今回は、VSCodeで自作モジュールのimportエラーを解消する方法を紹介しました。

VSCodeを使い始めた初心者の方はIDE固有の設定などでつまづいてしまうことがあるかもしれませんが、使いこなして快適な開発環境を手に入れましょう。

以上になります。この記事がどなたかの助けになれば幸いです。