フリーソフト(10)Thonny Python IDEの使い方④ birdeye
Python デバッガー birdseye
Thonnyは初心者向けのPython IDE(統合開発環境 Integrated Development Environment)です。前回に説明したデバッグ以外にThonnyでbirdseyeというPythonデバッガーが使用できるようです。birdeyeは、式の値を記録するPythonデバッガーらしいです。私は素人なので雰囲気だけ記載します。
Help表示
Thonnyのメニューから「Run>Debug current script(birdseye)」を選択すると以下が表示されました。birdseyeを利用するのは別途インストールが必要です。
「はい」をクリックするとbirdseyeの概要がHelp欄に表示されます。ThonnyのHelp欄にある「birdseye」のリンクと同じです。birdseyeの概要らしきものが表示されます。詳しくは「https://birdseye.readthedocs.io/」を参照してください。
パッケージをインストール
Thonnyをインストールしたデフォルト状態ではbirdseyeはインストールされてません。birdseyeを使うには別途パッケージをインストールする必要があります。
Thonnyなら簡単にインストールできます。メニューから「Tools>Manage package」を選択します。
パッケージ名 birdseyeを入力、検索してインストールします。インストールできたら「close」で閉じます。
使ってみる
以下の「foo.py」で試してみます。
birdseyeの使い方を「https://birdseye.readthedocs.io/en/latest/quickstart.html」でみると、以下のように表記されていました。
上記を参照して、デバッグするために「foo.py」を以下のようにし、ファイル名を「foo_deco.py」にしました。
このままでは動きません。ターミナルで簡易サーバーらしきものを立ち上げる必要があります。素人なのでよくわかりません。とにかくやってみます。
ターミナルを立ち上げます。「Tools>Open system shell」からでもよいと思います。
※Thonnyの表記がterminalのため本来コマンドプロンプトと記すところを「ターミナル」で記載しています。
以下の例ではプロンプトがC:\になっています。「birdseye」を実行します。
C:\>birdseye
以下のようになりました。ローカルサーバーが立ち上がったようです。
この状態でThonnyのメニューで「Run」を選択します。とりあえず動いたようです。「http://127.0.0.1:7777/」を開いてみます。
「http://127.0.0.1:7777/」を開くとデバッグデータができたようです。赤枠のアイコンをクリックしてみます。
何かデバッグのデータが表示されました。
囲み部をクリックすると青枠で囲まれます。下段に情報が表示されています。カーソルを当てると最下段に情報が表示されるようです。
「a」の青枠をもう一度クリックすると非選択になります。「e=」の外枠だけ選択することもできます。動作状態を保存しているので個々データを選択して確認できるようです。初めて使っているので、現状はこれくらいしか分かりません。
ちなみにターミナルは開いたままです。ブラウザとデータをやり取りしているようです。素人なのでよくわかりません。Birdseyeでデバック終了時にはターミナルもCtrl+Cで終了します。
ブラウザ上部のbirdseyeのロゴをクリックすると「http://127.0.0.1:7777/」に戻ります。
Thonnyの機能を使う
@eyeの無い普通のスクリプト「foo.py」に対して、Thonnyからbirdseyeを使ってみます。同じように先ずターミナルからbirdseyeを起動させ簡易serverなるものを立ち上げます。
メニューバーから「Run>Debug current script(birdseye)」を選択します。
この場合、直接デバッグの画面が開きました。
ブラウザのアドレスバーにhttp://127.0.0.1:7777/(http://localhost:7777/)を入力すれば、birdseyeのメイン画面が表示されます。
Thonnyから「Run>Debug current script(birdseye)」を選択すると、現在、開いているスクリプト(ここの例では「foo.py」)を直接デバッグできます。birdseyeのインポート文、@eyeデコレーターも書込みしなくても良いので簡単で便利だと思います。
ちなみに、birdseyeのインポート文、@eyeデコレーターを書き込んだ「foo_dec.py」をThonnyからbirdseyeを選択すると、先と同じようにデバッグ画面が直接開きます。
しかし、このままではデバッグできそうに無いです。赤枠の矢印をクリックします。
関数の中に入ってデバッグができるようです。
実質、Thonnyでスクリプトを実行した一番最初の画面と同じになりました。
birdseyeのデバッグデータ
birdseyeのローカルホームを開いてみます。先の「foo.py」「foo_deco.py」のデバッグデータが残っています。
「foo.py」赤枠の「▶」をクリックしてみます。
デバッグデータが開きました。ここから再確認などができるようです。
「foo.py」赤枠横の「Executions of module」クリックしてみます。デバッグデータが2つ保存されていました。
赤枠の「▶」では最新データが開くようです。
デバッグデータの消去
デバッグするたびにデータが増えて行くようです。消す方法を調べてみました。ターミナルで以下を実行します。
python -m birdseye.clear_db
一応、消えたようです。
birdseyeのローカルホームを確認します。空の状態になったようです。初期画面の状態になりました。
残念ながらデバッグデータを個別に消去する方法は分かりませんでした。私のような素人レベルではこれくらいが限界です。
まとめ
Thonnyからbirdseyeでデバッグする場合、birdseyeのインポート文、@eyeデコレーターが省けます。そのため普段のスクリプトをそのままbirdseyeでデバッグできるので簡単です。
またスクリプトのデバッグデータを保存しているので見たいところを選択的、分散して個別に確認できるようです。簡易サーバーを立ち上げる手間はありますが便利な気がします。
私のような素人レベルでは長いスクリプトを作ることもないので使わないと思いますが・・。
追記
簡易サーバを立ち上げるとWarningが表示されていました。少し気になるので調べてみました。
ターミナル(コマンドプロンプト)で以下を実行します。
set FLASK_ENV=development
一応、WARNINGは消えました。たぶんこの状態で使った方が良いのだろうと思います。
素人なので詳細はよくわかりません。
追記は以上です。