概要
- VSCodeでPythonの開発をしており、
Run > Start Debugging
で実行したときのみ、デバッグ処理としてコマンドライン引数を渡しながらスクリプトの動作を確認したい
参考
実装
-
.vscode/launch.json
にenvを追加し、そこにデバッグ時にのみ有効になる環境変数を追加する
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
+ "env": {
+ "VSCODE_DEBUG_MODE": "true"
+ }
}
]
}
-
config.py
を作成しenvの情報を取得する処理を書く
config.py
import os
# VSCodeからデバッグモードで起動しているかどうか
VSCODE_DEBUG_MODE = bool(os.environ.get("VSCODE_DEBUG_MODE"))
- 呼び出し例は以下の通り
- デバッグ起動時に自動でコマンドライン引数を渡せるようにしている
import sys
from src.utils.config import VSCODE_DEBUG_MODE
def main() -> None:
if VSCODE_DEBUG_MODE:
sys.argv += ["-m", "Hello, Python"]
print(sys.argv)
if __name__ == "__main__":
main()
- 実行結果は以下の通り
# Run > Start Debuggingから実行した場合
['<path-to-dir>/src/api/hoge.py', '-m', 'Hello, Python']
# uv run hoge.pyを直接実行した場合
['<path-to-dir>/src/api/hoge.py']