2015 年 7 月の記事一覧です(1 件)

[IPython] PuDB を IPython のマジックコマンドで使う

最近アルゴリズムなんかを理解する為に写経したPythonコードをPuDBにかけることが多いのですが、PuDBを単体で動かすよりも、IPython上で使えたほうがなにかと便利なのでやり方をメモっておきます。試した環境はYosemite、Python3.4.2です。

スクリーンショット 2015-07-09 21.18.23

PuDBに関してはこちらのエントリーが詳しいです(参考にさせて頂きました)

PuDBを動かす場合、pip でインストールしてから、このようにいつもpythonと打つところをpudbとして起動させます。

pudb3 sieve.py 1000
もしくは-mオプションを付けて呼び出すのですが、
python -m pudb sieve.py 1000
IPythonを使っている場合は以下のようにするとマジックコマンドで使えます
In [1]: import pudb.ipython

In [2]: %pu
%pudb   %pushd

In [2]: %pudb sieve.py 1000
但し、これだと毎度毎度呪文のようにインポートしなければならないので、IPythonの起動時にインポートしてしまいます。具体的には以下のようにプロファイルを作成し、コンフィグファイルにインポートコマンドを記述します。
$ipython profile create
$vi .ipython/profile_default/ipython_config.py 
そして、 c.InteractiveShellApp.exec_lines というコメントアウトされた箇所を見つけ、コメントアウトを解除し、"import pudb.ipython"を追記します。
# lines of code to run at IPython startup.
c.InteractiveShellApp.exec_lines = [
    "import pudb.ipython"
]
因みに、virtualenv(wrapper)環境のIPythonでもちゃんとPuDBのマジックコマンドは使えているので、virtualenv(wrapper)環境下でも設定ファイルは見てくれているようです(sys.pathするとpathが通っているのがわかります(一番最後))。
In [1]: import sys; sys.path
Out[1]:
['',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/bin',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python34.zip',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python3.4',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python3.4/plat-darwin',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python3.4/lib-dynload',
 '/usr/local/Cellar/python3/3.4.2/Frameworks/Python.framework/Versions/3.4/lib/python3.4',
 '/usr/local/Cellar/python3/3.4.2/Frameworks/Python.framework/Versions/3.4/lib/python3.4/plat-darwin',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python3.4/site-packages',
 '/Users/hogepiyo/.virtualenvs/tmp-b5af62af20e6b944/lib/python3.4/site-packages/IPython/extensions',
 '/Users/hogepiyo/.ipython']

In [2]:
IPython起動時の設定に関してはこちらを参考にさせて頂きました。
Python Tips:IPython の起動時に特定の処理を走らせたい - Life with Python


PAGE TOP