-->

2013年7月14日 星期日

Python - Auto Completion under Interaction Mode

在 Expert Python Programming 看到,在 Python Interactive Mode 裡,如何產生 auto-completion 的功能。

在未介紹之前,我們在 command-line 打上 python,會看到類似的 interactive mode

$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Display all 174 possibilities? (y or n)

例如在 import os,但可能突然忘了某個語法怎麼下的時候,這時候就可以透過 auto-completion 的功能,方便查詢。

在 Linux (CentOS) 可以用下面的方法來添加:

  1. 首先,在你的 HOME 目錄,加入 .pythonstartup 這個檔案
    $ vim ~/.pythonstartup

    import readline
    import rlcompleter
    import atexit
    import os
    
    # tab completion
    readline.parse_and_bind('tab: complete')
    # history file
    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
    
    
  2. 接著在你的環境變數增加 PYTHONSTARTUP 這個變數
    $ vim ~/.bash_profile

    在最後面加上
    export PYTHONSTARTUP=~/.pythonstartup
  3. 最後做重讀設定的動作
    $ source ~/.bash_profile
這樣就完成了,我們此時可以重新進入 python 的 interactive mode 去看結果:
$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os. # ← 我們打完 os. 之後按下 tab 鍵
Display all 244 possibilities? (y or n) # ← 然後輸入 y,接下來會看到所有的成員
os.EX_CANTCREAT
os.WIFEXITED(
os.execle(
os.popen(
os.EX_CONFIG
os.WIFSIGNALED(
os.execlp(
os.popen2(
...

這樣就大功告成了。

沒有留言:

張貼留言