概要
VS Codeで自作モジュールmodule
をインポートしたソースコードを見ると、Import "module" could not be resolved Pylance(reportMissingImports)
とエラーが表示される。
これはソースコード自体のエラーではなく、VS Codeのエラーである。
VS Codeの設定を変更することで、この問題は対応できる。その流れを書く。
はじめに
次のようなディレクトリ構成とテストコードを書きました。
- ディレクトリ構成
blogtest └── test ├── __pycache__ │ └── module.cpython-37.pyc ├── dir1 │ ├── __pycache__ │ │ └── module1.cpython-37.pyc │ ├── module1.py │ └── subdir1 │ ├── __pycache__ │ │ └── module2.cpython-37.pyc │ └── module2.py ├── main.py └── module.py
# main.py ### import sys sys.path.append('./dir1') sys.path.append('./dir1/subdir1') import module import module1 from module2 import func2 print('------------- begin -------------') module.func() module1.func01() module1.func02() func2() print('------------- end -------------') # module.py ### def func(): print('-----------------') print('Success import func from module!!') # module1.py ### def func01(): print('-----------------') print('Success import the func01 from module1!!') def func02(): print('-----------------') print('Success import the func02 from module1!!') # module2.py ### def func2(): print('-----------------') print('Success import func2 from module2!!')
実行結果は期待値通りとなりました。
- 結果
$ python main.py ------------- begin ------------- ----------------- Success import func from module!! ----------------- Success import the func01 from module1!! ----------------- Success import the func02 from module1!! ----------------- Success import func2 from module2!! ------------- end -------------
しかし、main.py
ファイルをVS Codeで見てみると、次のように黄色い線で警告が生じました。
そこに矢印を当てるとImport "module1" could not be resolved Pylance(reportMissingImports)
というエラーが生じました。
このエラーはソースコード自体のものではなく、VS Codeのほうのエラーです。今回はこのエラーの解決方法を説明します。自分用のノートと他の誰かのために。
解決策
コマンドパレットを開く。ショートカットキーは
command + shift + P
です。または、次のようにして開いてください。検索ボックスに
settings
と入力して、Enterを押す。settings.json
が表示される。
注:
コマンドパレットにsettings
を入力しても、何も変化がなくsettings.jon
が表示されない可能性があります。そのときはなんとかしてsettings.json
ファイルを他の方法で見つけてください。もしかしたら、コマンドパレットの前に設定(Settings)を押して、そこにsettings
と入力してから、再びコマンドパレットでsettings
と入力しなければならないかもしれません(私はその方法でsettings.json
を見つけました)。"python.analysis.extraPaths"
に自作モジュールの相対パスを設定する。 今回の場合、test
ディレクトリが一番上ですので、そこからの自作モジュールのパス./dir1
と./dir1/subdir1
を設定します。エラーは解決されます。もしもエラーが解決されなければ、一度VS Codeを再起動してください。ですがおそらく再起動の必要はないと思います。
ちなみにですが./dir1
だけが記入されてもエラーは残ります。./dir1
配下をrecursiveに参照しないため、ちゃんと./dir1/subdir1
も書かなければなりません。
ディレクトリの場所が変わったとき
これまでの例はtest
配下での対応でした。ですが、もしそのひとつ上の階層であるblogtest
配下に移ると再びエラーが生じます。ですので、再びsettings.json
を修正してください。
test | blogtest |
---|---|
./dir1 |
./test/dir1 |
./dir1/subdir1 |
./test/dir1/subdir1 |
僕から以上