目的
VSCodeのデバッグ機能を使用して、現在開いているファイルをデバッグしたい。
つまづきポイント
sys.pathがディレクトリ全体ではなく、そのmoduleが存在するパスしか読み込みません。なので、自作moduleをインポートする場合importエラーが出ます。
例えば、以下のようなディレクトリ構造で、retriever.pyからutils.normalize_text.pyをインポートするとエラーなります。
├── keyword_retriever
│ └── retriever.py
├── utils
│ └── normalize_text.py
from utils.normalize_text import normalize_documents
importエラーが発生
例外が発生しました: ModuleNotFoundError
No module named 'utils'
File "/usr/src/app/keyword_retriever/retriever.py", line 28, in <module>
from utils.normalize_text import normalize_documents
ModuleNotFoundError: No module named 'utils'
解決策
launch.jsonに以下を追加する
{
"name": "Python デバッガー: 現在のファイル",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}",
"justMyCode": true,
"env": {
"PYTHONPATH":"${PYTHONPATH}:${workspaceFolder}", // 追加
}
},
PYTHONPATHに現在のプロジェクトディレクトリを指定することで、sys.pathがmodeleを読み込むようになります。