python:並列な関係(兄弟関係)のフォルダ間でモジュールimportするとエラーが出る

dTree

Base
  ├
  ├─Dir1
  |  └─ a.py
  ├─Dir2
  │  └─ b.py

上記の構造の構成で、a.pyからb.pyをimportで呼び出したい場合、普通にやるとエラーが出ます。ModuleNotFoundError: No module named 'utils'とか。

そこで、こういう記述をする、というのが一般的な解決策です。

''' a.py

import sys, os
sys.path.append(os.pardir)

from Dir2 import b

しかし、私の環境(vs code)では、これでもエラーが出ました。

色々な解決策があるようですが、実は、VS Codeの設定をいじるだけで直せます。

VSCodeの「ファイル」→「ユーザー設定」→「設定」からpython.terminal.executeInFileDirにチェック。

これだけです。コードはそのままで動きます。めっちゃ簡単!!

他の回避策としては、パスを色々といじる、というのがあるようなのですが、どうしても私のVS Code環境ではうまくいかず、、でした。しかし、この方法なら超簡単に解決できました。

あと、コードの自動整形を入れてると、インポートの順番が勝手に変わってしまって動きません。仕方ないので、自動整形の機能をオフにして使ってます。

この記事が気に入ったらサポートをしてみませんか?