Pythonのインタラクティブモードを拡張してみた
Pythonのインタラクティブモードが拡張できると聞いてやってみたメモ。
作業環境はMacOSX。
インタラクティブモードとは?
pythonコマンドを実行したときに表示される、
インタラクティブにコマンドを実行できるモードのこと。(↓これ)
$ python Python 2.5.5 (r255:77872, Sep 28 2010, 00:18:50) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> 1+2 3 >>> 3+4 7 >>>
↑これに、タブによるコマンド補完とコマンドヒストリー機能をつけてみる。
カスタマイズ
まずPYTHONSTARTUP環境変数に設定する用のファイルを作成する。
PYTHONSTARTUP環境変数に設定されたファイルは、インタラクティブモードの起動時に実行される。
今回は.pythonstartupというファイルを作り、ホームディレクトリ配下に設置した。
$ vi ~/.pythonstartup
# -*- encoding: utf-8 -*- # Pythonスタートアップ import readline import rlcompleter import atexit import os # タブ補完 readline.parse_and_bind('tab: complete') # ヒストリーファイル histfile = os.path.join(os.environ['HOME'], '.pythonhistory') try: readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter, atexit
このコードは、エキスパートPythonプログラミングで紹介されていた例をコピペしたもの。
この本で提供されてるスクリプト(洋書版)はパッケージ化されていて、pbp.scriptsからダウンロードできる。
続いて、PYTHONSTARTUP環境変数に.pythonstartupを設定する。
$ vi ~/.bash_profile
export PYTHONSTARTUP=~/.pythonstartup
最後にsourceコマンドを実行する。
$ source ~/.bash_profile
以上で設定完了。
インタラクティブモードでタブによるコマンド補完とコマンドヒストリー機能が有効になる。
$ python Python 2.5.5 (r255:77872, Sep 28 2010, 00:18:50) [GCC 4.2.1 (Apple Inc. build 5664)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.s[tab] sys.setcheckinterval sys.setprofile sys.settrace sys.stdin sys.subversion sys.setdlopenflags sys.setrecursionlimit sys.stderr sys.stdout
IPython
上記のとは別にIPythonという拡張インタラクティブモードを提供するプロジェクトがある。
らしい。
IPythonのビルドが2時間たっても終わらないのでまたいつか。