Date: 2009-12-02
Tags: zope

Zopeのdebugコンソールをipython化する

Zope/Ploneアドベントカレンダーをtakanoryさんにお願いされた ので2日目を担当します。Zopeのdebugコンソールをipython化します。

とりあえずipythonはインストール済み( easy_install ipython )ということにしておきます。

まず bin/zopectl debug コマンドで起動します。最近のPloneなら bin/instance debug ですね。次に起動したインタラクティブシェル上で以下のように入力します:

>>> import IPython
>>> IPython.Shell.IPShell(user_ns=locals()).mainloop(sys_exit=1)

これ以降の対話はipythonで行われるようになります。お手軽ですね!以下は実際にやってみたときの画面キャプチャ(見やすくするためにちょっと加工)。出力結果が自動的pprintされるので見やすくなっていますね。

../../_images/20091202-zope-ipython1.png

bin/instance debug 後にipython化する例

pyreadline がインストールしてあるとタブ補完も使えるようになります。

../../_images/20091202-zope-ipython2.png

ipython+pyreadlineでタブ補完する

ipythonの機能で、オブジェクトの後ろに ? を付けると、型やソースの場所、doc stringが表示されます。さらに ?? (ハテナ2つ)を付けるとソースコードまで表示されます。とっても便利ですね。

../../_images/20091202-zope-ipython3.png

オブジェクトの後ろに?を付けると...

次はこれを import IPython 等せずに bin/zopectl debug 起動したら最初からipythonシェルにする方法を書こうと思ったのですが、時間切れで間に合わず><

次のバトンは 田原悠西の日記 の田原さんです。よろしくー。