pythonインタプリタでのメソッド名の補完
irbでは出来る(実際やってみてすごく便利になった)ので、pythonにもあるはずだっ!と思って探したらあった。これってpython使いにはもしや常識なのかな?せっかくなので作業メモ。
前提
pythonの環境はdreamhostでpython2.5とdjangoを使うのエントリを書いたときのもの。
(無かったら)GNU readLineのインストール
GNU readLineが必要らしい。普通は入ってるはず。というか
% dpkg -l | grep readline ii libreadline-ru 1.8.5-4 Readline interface for Ruby 1.8 ii libreadline4 4.3-11 GNU readline and history libraries, run-time ii libreadline5 5.0-10 GNU readline and history libraries, run-time
だし、普通にある。で、dreamhostに最初から入ってるpython2.4.1で
>>> import readline
して問題なかった。だが残念ながら自分のホームディレクトリ配下にインストールしたpython2.5だとエラーになった。というわけでホームディレクトリ配下にreadlineをインスールしてみた。(パッチもいくつか出てたので適用)
% wget ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz % tar zxf readline-5.2.tar.gz % mkdir readline-5.2/patches % cd readline-5.2/patches/ % wget -c 'ftp://ftp.gnu.org/gnu/readline/readline-5.2-patches/readline52-*' % rm *.sig % cd ../ % foreach f ( patches/readline52-* ) foreach% patch -p0 < $f foreach% end % ./configure --prefix=$HOME/root % make && make install
pythonのリビルド
% cd ~/src/Python-2.5/ % ./configure --prefix=$HOME/root % make && make install
で再度
>>> import readline
してみたら問題なくなった。そこで以下の設定を行った。
~/.pythonrc.py
以下のような感じで作成。
import rlcompleter, readline readline.parse_and_bind('tab: complete')
~/.zshenv
以下を追加
export PYTHONSTARTUP=$HOME/.pythonrc.py
反映
source ~/.zshenv
で、試してみると…
% python Python 2.5 (r25:51908, Aug 13 2007, 15:47:54) [GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> p pass pow print property >>> pr print property
あっさり出来た。でもすごく便利。あとついでにviな人やemacsな人は~/.inputrcも作るさらに幸せになるかもしれない。