今回はAnacondaにて作成した環境を使用し、Pythonによって実装している際に、VisualStudioCodeで使用できるように環境設定したにもかかわらず、
デバッグをした際にブレークポイントで処理が止まらない現象について原因と対処法について解説いたします。
現象
まず現象は以下の通りです。
Anacondaにて仮想環境を作成し、VisualStudioCodeにてPythonの拡張機能をインストールした。
その後VSCodeにて作成した仮想環境を読み込み実装したコードの任意の場所にブレークポイントを配置。
デバッグを実行したところ設定したブレークポイントで止まらずにそのまま実行されてしまう。
つまり、ブレークポイント設定したのに止まらない!どうして!?といった現象です。
環境はWindows環境でのみのお話ですのでMac等の環境で同様の現象が起きるかどうかはわかりません。
もし同様の事象が起こっていたとしてもここで記載する対策では解決しない可能性が高いですので、予めご了承ください。
ブレークポイントで処理が止まらない原因
まずは現象の原因について確認します。サクッと対処法だけ知りたいという方は対処法まで飛ばしてください。
原因はフォルダ階層にあります。
Anacondaをインストールすると大抵「C:\Users\<ユーザー名>\anaconda3\envs」配下に仮想環境を作成するようになっていると思います。
今回は予め作成してある”TestEnv”を使用して確認します。

ここに仮想環境を作成した場合、このフォルダをVSCodeで開いてプログラムを書いていこうと思う方が多いと思います。
そうするとデバッグを実施する際に必要な「launch.json」ファイルはこの仮想環境のさらに下に作成することになると思います。

この状態でデバッグを実行するとブレークポイントで処理が止まらずに最後まで実行されてしまうと思います。

つまり「launch.json」がフォルダ階層の深いところにあるので、VScodeが見に行けずにデバッグができない状態になっていると考えられます。
対処法について
問題はファイル階層が深い場所にコードやデバッグ用の「launch.json」がおいてあることなので、対処法としては「launch.json」を浅いところにおいてあげて実行するだけです。
どこまでの階層ならよいかは詳しくはわかりませんが、Cドライブから2,3個程度の深さなら問題ありません。
上記で使えなかった仮想環境、”TestEnv”で再度確認します。環境が適用されているかの確認のために「Numpy」を使って実行してみます。

Cの直下に「Python」というファイルを作成し、その中にワークスペースを想定したフォルダ「testapp」を作成します。

この配下に以下のプログラムを作成し、デバッグ実行できるように「launch.json」を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
""" 身長の区間推定を行うプログラム 正規分布に従うと仮定し、母分散が 6^2 の95%区間推定を行う。 """ import numpy as np def estimation(data,v=6**2): """ data = 身長データ v = 分散、初期値は6^2 """ m = np.mean(data) #平均値を取得 n = data.size #長さを取得 low = m - 1.96 * (np.sqrt(v) / np.sqrt(n)) #下限を計算 high = m + 1.96 * (np.sqrt(v) / np.sqrt(n)) #上限を計算 print("母平均の推定値は " + str(low) + " ≦ μ ≦ " + str(high) + "となる。") a = np.array([165,170,163,171,161,162,180,158,164]) #9人分(男)の身長(cm) estimation(a) #推定を実行 |
一応「launch.json」も貼っておきます。VSCodeが自動生成するやつで使えるはずです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal" } ] } |

この状態で適当にブレークポイントを置いて実行してみます。

ブレークポイントで処理が止まっていることがわかると思います。
以上、VScodeでPythonの仮想環境がブレークポイントが止まらない際の対処法でした。同じ現象の方がいればフォルダ構造を見直してみて、仮想環境を作成する場所を変えてみたりしてください。
その他、同じような問題があって解決できない、こんな事で困っている等ございましたら、コメント等でご連絡いただけますと幸いです。
コメント