pythonのインタラクティブモードで補完を有効にする方法
エキスパートPythonプログラミングで知ったのでメモしておく。
まあ、IPythonを使うことがほとんどだと思うけど。
コードの準備
以下のコードを準備。
# -*- coding: utf-8 -*- import readline import rlcompleter import atexit import os # tab complete readline.parse_and_bind('tab: complete') # history histfile = os.path.join(os.environ['HOME'], '.pythonhistory') try: readline.read_history_file(histfile) except IOError, e: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter, atexit
上記コードが準備できたら、このコードをどっかにファイル名 .pythonstart で保存する。
ここでは説明のため、~/.pythonstartup に置くものとする。
パスの設定
.pythonstartup ファイルをどっかに置いただけでは、Python のインタラクティブモードで補完が有効にならない。このファイルへのパスを通すために環境変数を設定する必要がある。
環境変数の設定は、.bashrc や .bash_profile などに記載する。記載例は以下のとおり。
export PYTHONSTARTUP=~/.pythonstartup
ここの例では、~/.pythonstartup にパスが通されている。
実行結果
shell を再起動させて実際に動かしてみるとこんな感じになる。
macbook-2:~ kazupon$ python Python 2.5.5 (r255:77872, Aug 9 2010, 04:39:07) [GCC 4.2.1 (Apple Inc. build 5659)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import datetime >>> datetime. datetime.MAXYEAR datetime.__dict__ datetime.__hash__ datetime.__reduce__ datetime.__str__ datetime.time datetime.MINYEAR datetime.__doc__ datetime.__init__ datetime.__reduce_ex__ datetime.date datetime.timedelta datetime.__class__ datetime.__file__ datetime.__name__ datetime.__repr__ datetime.datetime datetime.tzinfo datetime.__delattr__ datetime.__getattribute__ datetime.__new__ datetime.__setattr__ datetime.datetime_CAPI
はい以上。便利♪