いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Pythonメモ-52 (ipython 上で pudb 起動) (ipython integration, pudb, %pudb, magic command)

概要

前回の続き

devlights.hatenablog.com

前回で、pudbスゲーってなって、いろいろ見てみると ipython とも連携できるみたい。

PuDB/IPythonIntegration - Andreas Klöckner's wiki

試してみる

てことで、前回の環境には ipython いれてなかったので入れる。

$ conda install ipython
Solving environment: done

## Package Plan ##

  environment location: /Users/xxxx/anaconda3/envs/pudb

  added / updated specs: 
    - ipython


The following NEW packages will be INSTALLED:

    appnope:          0.1.0-py36hf537a9a_0 
    decorator:        4.1.2-py36h69a1b52_0 
    ipython:          6.2.1-py36h3dda519_1 
    ipython_genutils: 0.2.0-py36h241746c_0 
    jedi:             0.11.0-py36_2        
    parso:            0.1.1-py36hc90e01c_0 
    pexpect:          4.3.0-py36h427ab81_0 
    pickleshare:      0.7.4-py36hf512f8e_0 
    prompt_toolkit:   1.0.15-py36haeda067_0
    ptyprocess:       0.5.2-py36he6521c3_0 
    simplegeneric:    0.8.1-py36he5b5b09_0 
    six:              1.11.0-py36h0e22d5e_1
    traitlets:        4.3.2-py36h65bd3ce_0 
    wcwidth:          0.1.7-py36h8c6ec74_0 

Proceed ([y]/n)? 

Preparing transaction: done
Verifying transaction: done
Executing transaction: done

ipython を起動。

$ ipython
Python 3.6.4 |Anaconda, Inc.| (default, Dec 21 2017, 15:39:08) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

上のwikiみると %pudb というマジックコマンドを使えるようにするために

import pudb.ipython

とする必要があるとのこと。

In [1]: import pudb.ipython

In [2]: 

何も出力でませんが、これで%pudbというマジックコマンドが使えるようになってます。

てことで、前回と同じドウデモイイサンプルを ipython 経由でデバッグしてみる。

In [1]: import pudb.ipython

In [2]: %pudb pudb_sample.py

以下のようになります。

f:id:gsf_zero1:20180109035031p:plain

オケ。素晴らしい。

一応ヘルプも。

In [5]: %pudb?
Docstring:
Debug a script (like %run -d) in the IPython process, using PuDB.

Usage:

%pudb test.py [args]
    Run script test.py under PuDB.
File:      ~/anaconda3/envs/pudb/lib/python3.6/site-packages/pudb/ipython.py

上記ページみると、import pudb.ipythonの部分は ipython の設定ファイルに書いておくと

毎回打ち込まなくていい状態になるよって記載されていますね。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。