特集
» 2018年04月24日 05時00分 公開

特集:Visual Studio Codeを使いこなそう!:Visual Studio Codeの設定「虎の巻」:Python編 (2/3)

[かわさきしんじ,Insider.NET編集部]

Python拡張機能でできること

 Python拡張機能をインストールすることで、VS CodeではIntelliSenseを利用したコーディングや上で見たLint機能の利用、統合ターミナル内でのPythonコードの実行、デバッグ実行などが可能になる。これらについて簡単に見ておこう。

 IntelliSenseについては説明不要だろう。コードを入力していくに連れて、Microsoftお得意のコード補完機能がビシバシと効いてくれる。

IntelliSenseの利用 IntelliSenseの利用

 Lint機能については、以下でも説明するLint関連の項目の設定を行い、必要に応じてパッケージをインストールすることで、コードの記述時に自動的にLintツールがチェックしてくれるようになる。設定方法については以下の「VS Codeの設定項目」を参照されたい。

 統合ターミナルでのPythonコードを実行するには、先ほども述べたように、対象のファイルをエディタで選択して、コマンドパレットで「run python」などと入力して[Python: ターミナルで Python ファイルを実行](Python: Run Python File in Terminal)コマンドを選択すればよい。以下はその例だ。コマンドパレットには[Python: ターミナルで Python ファイルを実行]コマンドと[Python: Python ターミナルで選択範囲/行を実行]コマンドが表示されている。ここで前者を選択すると、その下の統合ターミナルに表示されているように、pythonコマンドを使ってそのファイルが実行される。

Pythonファイルの統合ターミナルでの実行 Pythonファイルの統合ターミナルでの実行

 もう1つの[Python: Python ターミナルで選択範囲/行を実行]というコマンドは、統合ターミナル内で対話環境を起動し、そこにコードを流し込むといった使い方をするのだと思われる。以下に例を示す。これは今述べた通り、統合ターミナルで対話環境を起動して、コマンドパレットでこのコマンドを選択しているところだ。すると、下の対話環境に表示されているように、選択範囲が実行される。

統合ターミナル内で起動したPythonの対話環境でコードを対話的に実行 統合ターミナル内で起動したPythonの対話環境でコードを対話的に実行

 Pythonコードを書いていて、対話環境でそのコードを試してみたくなるというのはよくあることで、そのような場合にはこちらのコマンドを使うことで、簡単にコードの動作を確認できるだろう。

 より直接的に、対話環境(REPL環境)を実行することも可能だ。これには、コマンドパレットから[Python: REPL を開始]コマンドを実行する。

REPL環境を開始したところ REPL環境を開始したところ

 デバッグ実行もとても簡単に行える。ウィンドウ左端のアクティビティーバーで[デバッグ]アイコンをクリックして、サイドバーに[デバッグ]ビューを表示する。一番簡単なのは、デバッグの構成を行わないまま、[デバッグの開始]ボタン(緑色の三角のボタン)をクリックするだけだ。すると、デバッグ構成を行うための選択肢が表示される。

デバッグ構成の選択画面 デバッグ構成の選択画面

 本稿執筆時(2018年4月23日)には、[Python]と[Python Experimental]の2つの選択肢があるが、後者は新しいデバッガを使用する場合の構成となる。詳しくは「Meta issue for the experimental debugger」などを参照されたい。ここでは[Python]を選択しよう。これにより、選択した設定でデバッグが開始される。ただし、ブレークポイントなどを設定していないと、エラーがない限りは、そのまま実行が完了してしまうこともあるので、注意しよう。以下はブレークポイントを設定した上で、デバッグ実行を行っているところだ。

デバッグ実行が完了したところ デバッグ実行が完了したところ

 [デバッグの開始]ボタンの隣にある歯車アイコンをクリックすると、上で見たのと同様に[Python]か[Python Experimental]のどちらかを選択するウィンドウが表示されるので、いずれかを選ぶと(ここでは[Python]を選択した)、デバッグ構成を記述するlaunch.jsonファイルが自動的に作成される。本稿で見ているような簡単なプログラムであれば、修正の必要はほぼないだろう。launch.jsonファイルを作成したら、デバッグ構成の中から[Python: Current File]を選択して、[デバッグの開始]ボタンをクリックすればよい。このとき、重要なのはエディタでlaunch.jsonファイルではなく、デバッグ対象のファイルを選択しておくことだ。これにより、そのファイルをエントリポイントとしてデバッグが開始される。

 launch.jsonファイルではおおよそ次のような内容を指定する。これはデフォルトで作成されるlaunch.jsonファイルから[Python Current File]と[Python: Attach]の2つの構成を抜き出して、そこに幾つかの要素とコメントを加えたものだ。configurations項目には「Python: Current File」「Python: Attach」などの名前が付けられた構成情報が列挙される。これらの名前が[デバッグ]ビューの[デバッグの開始]ボタンの隣にあるドロップダウンに表示される。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Current File",
      "type": "python",
      "request": "launch",
      "stopOnEntry": true,
      "pythonPath": "${config:python.pythonPath}",
      "program": "${file}",
      "cwd": "${workspaceFolder}",
      "console": "integratedTerminal",
      "internalConsoleOptions": "openOnFirstSessionStart"
    },
    {
      "name": "Python: Attach",
      "type": "python",
      // …… 省略 ……
      "host": "localhost"
    },
    // …… 省略 ……
  ]
}


launch.jsonファイルで構成する内容

 上で使用しているものを中心に、Pythonコードのデバッグ構成で指定可能な項目を以下に示す(一部)。以下の表の「上で設定している値」列には「Python: Current File」構成のものを記してある。

項目 説明 上で設定している値
name 構成の名前。[デバッグの開始]ボタンの隣に表示される "Python: Current File"
type 使用するデバッグの識別子 "python"
request プログラムを起動するか(launch)、アタッチするか(attach) "launch"
stopOnEntry 開始時にデバッグ実行を中断するかどうか。これを省略するか、falseにした場合には開始時に中断されない true
pythonPath 使用するpythonコマンドへのパス "${config:python.pythonPath}"
program デバッグ対象のファイルの絶対パス。"${file}"を指定すると、VS Codeで現在選択されているファイルとなる "${file}"
cwd デバッグ時のカレントディレクトリ "${workspaceFolder}"
env デバッグで必要な環境変数の設定 未指定
envFile 環境変数の設定を記述したファイルの絶対パス 未指定
debugOptions デバッグ実行のオプション 未指定
onsole 使用するコンソールの指定 "integratedTerminal",
internalConsoleOptions 統合ターミナル使用時の[デバッグ コンソール]表示設定 "openOnFirstSessionStart",
windows Windowsでデバッグ実行するときの構成 未指定
osx macOSでデバッグ実行するときの構成 未指定
linux Linuxでデバッグ実行するときの構成 未指定
構成可能な要素

 デバッグ実行時にpythonコマンドでプログラムを実行するときにはrequest項目を「launch」とする。既に実行中のプログラムのデバッグをするなら「attach」となる。現在はlaunch.jsonファイルの生成時に、両者の設定が含まれるようになっているので、自分で記述する際には参考にしてほしい。stopOnEntry項目がtrueの場合、デバッグ実行開始時に中断する。falseにすると、中断することなく実行が開始される。cwd項目はデバッグ実行時のカレントディレクトリを、env/envFile項目は、デバッグ実行で指定する必要がある環境変数の設定を指定するものだ。

 pythonPathの値は「config:python.pythonPath」となっているが、これは(ご想像の通り)ワークスペースなどの設定で指定したpythonコマンドのパスを参照することを意味している。このことからも、ワークスペース(あるいはユーザー)単位で使用するPythonのバージョンを指定するのが重要になる。

 debugOptions項目では以下の値を配列形式で指定する(一部)。指定がない場合は、"RedirectOutput"のみが指定されたものとして解釈される。

  • "RedirectOutput":プログラムの出力を全て統合ターミナルの[デバッグ コンソール]に表示する(デフォルトで指定される。後述のconsole項目の設定も参照)
  • "DebugStdLib":標準ライブラリのデバッグを行う
  • "Django":Django(Python用Webアプリフレームワーク)に固有のデバッグ機能を使用するときに指定する
  • "Pyramid":Pyramid(Python用Webアプリフレームワーク)を使用する際に指定する

 console項目には"none"(統合ターミナルの[デバッグ コンソール]タブに表示。デフォルト値)か"integratedTerminal"(統合ターミナルの[ターミナル]タブ)か"extrnalTerminal"(外部ターミナル)を指定できる。これらはプログラムの出力をどこに送るかを指定するもので、この値が"none"かつdebugOptionsで"redirectOutput"を指定していると、出力が[デバッグ コンソール]に送られる。他の2つを指定した場合は、"redirectOutput"は無視される。これら2つの設定の組み合わせで実際に[デバッグ コンソール]タブへの出力がどう変わるかは読者自身でも試行錯誤してみてほしい(筆者が試した限りは常に[デバッグ コンソール]タブに出力が送られるようにも感じられた)。

 internalConsoleOptions項目は統合ターミナルにある[デバッグ コンソール]タブの表示方法を指定するものだ。指定可能な値は"neverOpen"([デバッグ コンソール]タブにフォーカスを移動しない)、"openOnFirstSessionStart"(最初のセッションで[デバッグ コンソール]を表示する)、"openOnSessionStart"(セッションのたびに[デバッグ コンソール]を表示する)の3つ。

 この他にも設定可能な項目はあるが、それらについては「Debugging Python with VS Code」ページを参照されたい。

 次にVS Code(+Python拡張機能)におけるPython関連の設定項目を見ていこう。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。