【Python・VSCode】Pythonのバージョン切り替え方法のコピー

※当サイトではアフィリエイト広告を利用しています

Python 開発環境

【Python・VS Code】launch.json設定ガイド

はじめに

Visual Studio Code(VS Code)でデバッグを行うときに欠かせないlaunch.jsonファイルについて、その役割や設定項目を詳しく解説します。
launch.jsonファイルは様々なプログラミング言語のデバックで利用されますが、本記事ではPythonのlaunch.jsonファイルをについて解説します。

■(広告)Pythonのオススメ書籍■

launch.jsonとは?

launch.jsonは、VS Code内でデバッグ設定を管理するための重要な設定ファイルです。
このファイルを使用することで、Pythonスクリプトのデバッグ方法をカスタマイズできます。

基本的なlaunch.json設定の解説

VS Codeが自動生成するlaunch.jsonファイルは下記になります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: 現在のファイル",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
}
]
}
{ "version": "0.2.0", "configurations": [ { "name": "Python: 現在のファイル", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true } ] }
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 現在のファイル",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true
        }
    ]
}

各プロパティの詳細

各プロパティについて、下の表に示します。

プロパティ説明
version・デバッグ設定のバージョン情報
・通常は自動生成され、VSCodeとの互換性を確保
・通常は"0.2.0"
configurations・デバッグ設定の配列
・複数の異なる設定を定義可能
name・デバッグ構成の表示名(VS Codeのデバッグメニューに表示)
・デバッグ実行時に選択可能な名前
type・デバッグ対象の言語
・Pythonの場合は"python"を指定
request・デバッグの起動方法
"launch": 現在のファイルを直接実行
"attach": 既に実行中のプロセスにアタッチ
program・デバッグ実行するファイルのパス
"${file}": 現在開いているファイル
console・デバッグ出力を表示するコンソール
"integratedTerminal": VS Codeの統合ターミナルを使用
・他に"externalTerminal""internalConsole"がある
justMyCode"true"に設定すると、ユーザーコードのみをデバッグ
 標準ライブラリや外部パッケージのステップスルーを防ぐ

高度なデバッグ設定の例

引数を渡す

スクリプトに引数を渡したい場合、configurations内でargs を使います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "Python: 引数付き実行",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": ["arg1", "arg2"]
}
{ "name": "Python: 引数付き実行", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true, "args": ["arg1", "arg2"] }
{
    "name": "Python: 引数付き実行",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "justMyCode": true,
    "args": ["arg1", "arg2"]
}

この設定では、スクリプト実行時に arg1arg2Listとして渡されます。

Python プログラムでの受け取り方

Python プログラムでは、sys.argv というリストで、渡された引数を受け取ることができます。

引数の使い方を下のサンプルコードに示します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import sys
def main():
args = sys.argv[1:] # スクリプト名を除いた引数を取得
print("渡された引数 すべて:", args)
print("渡された引数 1:", args[0])
print("渡された引数 2:", args[1])
if __name__ == "__main__":
main()
import sys def main(): args = sys.argv[1:] # スクリプト名を除いた引数を取得 print("渡された引数 すべて:", args) print("渡された引数 1:", args[0]) print("渡された引数 2:", args[1]) if __name__ == "__main__": main()
import sys

def main():
    args = sys.argv[1:]  # スクリプト名を除いた引数を取得
    print("渡された引数 すべて:", args)
    print("渡された引数 1:", args[0])
    print("渡された引数 2:", args[1])

if __name__ == "__main__":
    main()

サンプルコードの出力は次のようになります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
渡された引数 すべて: ['arg1', 'arg2']
渡された引数 1: arg1
渡された引数 2: arg2
渡された引数 すべて: ['arg1', 'arg2'] 渡された引数 1: arg1 渡された引数 2: arg2
渡された引数 すべて: ['arg1', 'arg2']
渡された引数 1: arg1
渡された引数 2: arg2

補足

  • 引数に空白文字や特殊文字が含まれる場合は、適切にエスケープする必要があります。
  • 引数の数や内容は、デバッグ構成ごとに異なるものを指定できます。
  • 複雑な引数を渡す場合は、引数パーサー(例:argparse)を使用することを検討してください。

環境変数を設定する

特定の環境変数を設定したい場合、configurations内でenv を使います。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "Python: 環境変数設定",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
"env": {
"MY_ENV_VAR": "hello"
}
}
{ "name": "Python: 環境変数設定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "env": { "MY_ENV_VAR": "hello" } }
{
    "name": "Python: 環境変数設定",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "justMyCode": true
    "env": {
        "MY_ENV_VAR": "hello"
    }
}

Python プログラムで環境変数の読み取り

環境変数の使い方を下のサンプルコードに示します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import os
def main():
print(os.environ['MY_ENV_VAR'])
if __name__ == "__main__":
main()
import os def main(): print(os.environ['MY_ENV_VAR']) if __name__ == "__main__": main()
import os

def main():
    print(os.environ['MY_ENV_VAR'])

if __name__ == "__main__":
    main()

サンプルコードの出力は次のようになります。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
hello
hello
hello

作業ディレクトリを指定する

configurations内でcwd を使うと、スクリプトの実行ディレクトリを変更できます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "Python: 作業ディレクトリ指定",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
"cwd": "${workspaceFolder}/scripts"
}
{ "name": "Python: 作業ディレクトリ指定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "cwd": "${workspaceFolder}/scripts" }
{
    "name": "Python: 作業ディレクトリ指定",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "justMyCode": true
    "cwd": "${workspaceFolder}/scripts"
}

プログラムの開始時に一時停止

stopOnEntry は、スクリプトの実行開始時にデバッガを一時停止させるオプションです。
これを true に設定すると、Pythonスクリプトの最初の行で自動的にデバッガが停止し、実行をステップ実行できます。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
{
"name": "Python: 作業ディレクトリ指定",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true
"stopOnEntry": true
}
{ "name": "Python: 作業ディレクトリ指定", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true "stopOnEntry": true }
{
    "name": "Python: 作業ディレクトリ指定",
    "type": "python",
    "request": "launch",
    "program": "${file}",
    "console": "integratedTerminal",
    "justMyCode": true
    "stopOnEntry": true
}

この設定を有効にすると、スクリプトの最初の行でデバッグが一時停止し、デバッガのコントロールを受け取ることができます。

役に立つ場面

  • スクリプトの最初からデバッグを始めたい場合
  • 初期化処理の流れを確認したい場合
  • 予期しない動作の原因をスクリプトの起動直後に調査したい場合

おわりに

launch.json を使うと、VS CodeでのPythonデバッグがより便利になります。
基本的な構成から、引数や環境変数の設定など、さまざまなオプションを活用して効率的にデバッグを行いましょう。

また、Pythonのデバッグの方法については、下の記事でも解説しています。

このガ記事を参考に、自分の開発環境に適した launch.json を設定してみてください!

最後までご覧いただきありがとうございました。

参考リンク

-Python, 開発環境
-

ja Japanese
S