このページでは VSCode で外部モジュール・ライブラリも含めてデバッグする方法について解説していきたいと思います。
VSCode では、Python プラグイン(拡張機能)を導入する事で簡単にステップ実行等のデバッグを行うことができるようになります。
ただし、初期状態では、ステップ実行等が行えるのは内部モジュール(自身で作成している Python スクリプト)のみになります。
一方、import
を行って使用している外部モジュールや外部ライブラリについてはステップ実行等のデバッグが行えません。
このページでは、これらの外部モジュール・外部ライブラリも含めて VSCode でデバッグを行う方法について解説していきます。
外部モジュール・外部ライブラリも含めてデバッグを行う方法
VSCode で Python の外部モジュール・外部ライブラリを含めてデバッグを行うためには、 justMyCode
設定を false
にすれば良いです。
設定
この設定は launch.json で行います。
launch.json に下記の緑背景部分のように justMyCode
設定の追記を行います。
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode" : false
}
]
}
これだけで外部モジュールに対してステップイン実行等のデバッグが行えるようになります。
launch.json が無い方は、下記手順で作成することができます。
- メニューバーの「実行」をクリック
- 「構成を開く」をクリック
- 「Python File」をクリック
スポンサーリンク
動作確認
試しに下記のような Python スクリプトで動作確認を行ってみます。
import tkinter
tkinter.Tk()
print("test!")
import
を行っている tkinter
は Python3 であれば追加でインストールしなくてもデフォルトで付属してくる外部モジュールになります。
tkinter.Tk()
部分は外部モジュールのメソッド呼び出しですので、通常はステップイン実行が行えません(ステップ実行してもメソッド内に入り込まず、ただの1行として処理される)。
しかし、justMyCode
を false
に設定しているとステップイン実行を行うことができます。
それを確かめるために、下記の黄色背景部分にブレークポイントを貼ってみましょう。
import tkinter
tkinter.Tk()
print("test!")
この動作確認用の .py ファイルを開いた状態でデバッグを開始すれば(メニューバーの「実行」をクリックし、さらに「デバッグの開始」をクリック)、スクリプトが実行されてすぐにブレークポイントを設定した箇所で動作が停止します。
この状態でステップイン実行を行うと、tkinter モジュールの Tk メソッドに入り込み、そのメソッドの先頭でスクリプト実行を停止することができます。
内部モジュール同様に、この状態からステップ実行も行うことができますし、各変数の中身を確認することができます。
こんな感じで、自身で作成したモジュールだけでなく、import
で取り込んだ外部モジュールや外部ライブラリに対してもステップ実行を行い、デバッグすることが可能になります。
ただし、justMyCode
でデバッグできる外部ライブラリは .py ファイルの部分のみです。
Python 以外で作成された .so ファイル等で提供されているライブラリに関しては別の方法を利用する方法があります(しかも結構手間がかかる…)。この方法は下記で解説していますので、Python 以外で作成したライブラリもステップ実行したい場合はこちらも是非お読みください!
VSCode で Python と OpenCV を混合でデバッグ(ステップ実行)する方法!まとめ
このページでは VScode で外部モジュール・外部ライブラリも含めてデバッグを行う方法について解説しました!
これが行えるようになることで、下記のメリットがあります。
- 外部モジュールでエラーが発生した原因が解明できる
- 外部モジュールの作りが理解できる(ヘルプを参照するよりも詳しく知れる)
- 外部モジュールのソースコードを動きを追いながら読める(勉強になる!)
外部モジュールを使い込むだけでなく、良質なソースコードを読む点においてもオススメです!
設定自体は簡単ですので、是非この機会に設定する or 設定方法を覚えておきましょう!