codeモジュールで対話コンソールを起動する

Pythonのcodeモジュールを使うと、任意のタイミングで対話コンソールを起動できる。
readline、rlcompleterモジュールを使うことで、対話コンソール実行時に補完を有効にすることもできる。
以下、サンプルコード。

console.py

# coding: utf-8
import code
import readline
import rlcompleter


def hello():
    print("Hello, world!")


def main():
    print(u"対話コンソールを起動します...")
    # コンソール起動時の変数を用意
    variables = globals()

    # Tabによる補完を有効にする
    readline.set_completer(rlcompleter.Completer(variables).complete)
    readline.parse_and_bind("tab:complete")

    # 対話コンソールを開始
    code.interact(local=variables)


if __name__ == '__main__':
    main()

実行結果

$ python console.py
対話コンソールを起動します...
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> hello()
Hello, world!
>>>