2009年2月18日 星期三

Windows 下初寫 Python 心得

今天下午用了一下 Python 處理簡單的文字檔,結果激起我對 Python 沉封已久的渴望,晚上看個半集動畫後,就試著在 Windows 下寫看看 Python。

除 Java 外,多年來我都習慣在 Unix 下寫程式,用 Windows 時也是透過 putty 連入 Unix,開 screen + vim split 來寫。這次轉念一想,乾脆來試看看在 Windows 下開發的情況,順便增長見聞。

保險起見,我選擇用 Python 2.6 而不是最近剛出來的 Python 3000。安裝時會要求選個路徑,我先開個 D:Python,之後打算把東西都丟在這下面,所以就裝在 D:PythonPython26下。裝好後的第一印象是,Windows 版有精美的 chm 檔真好,索引文件超方便!

再來是設定 VIM:

  • 下載 python.vim到 C:Documents and SettingsUSERvimfilesindent ( 需先自行新增目錄 vimfiles 和 vimfilesindent ),並在 C:Documents and SettingsUSER_vimrc 裡加上:
    1
    
    autocmd BufRead,BufNewFile *.py set sw=4 tabstop=4 smarttab smartindent expandtab

    如此一來才能方便地縮排和有漂亮的色彩。

  • 為了方便執行,在 _vimrc 裡加上:
    1
    
    autocmd BufRead,BufNewFile *.py map <F10>% w !python<CR>

    這樣就能按 F10 執行目前編輯的 script。

編輯環境弄好後開始試 Test Driven Development ,來看 pyUnit 怎麼用。pyUnit 有含在預設的 modules 裡,抄幾段範例碼就能用了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#-------------------------------------------------
# Press F10 to execute the test case directly in VIM
#-------------------------------------------------
 
import unittest
 
class MainTestCase(unittest.TestCase):
    def setUp(self):
        pass
 
    def tearDown(self):
        pass
 
    def testAMethod(self):
        self.assertTrue(True)
        self.assertEqual(2, 1 + 1)
 
 
if __name__ == "__main__":
    unittest.main()

結果沒找到 GUI 版的 pyUnit,少了精美的綠色進度表就不是 xUnit 了啊!

接下來演變為長期抗戰,裝好的 Python26 裡沒有 pyUnit 上提到的 unittestgui.py,而官網上的載點也失效了,好在可以從 code search site 找到: unittestgui.py。可是怎麼試都是載入失敗。最後在 pyUnit 官網找到另一個方案:GUI test runner using wxPython

這份 unittestgui.py 用到 wxPython,所以得下載對應到 Win32 Python 2.6 的 wxPython,執行安裝檔後會自動找到 Python 2.6 的位置,而將預設路徑設為 Python26Libsite-packages,真是方便啊。原本還在擔心 Windows 下 Python module 要怎麼管理,結果很簡單。果然無知會造成恐懼。裝好 wxPython 後,再改一下 wxPython 版的 unittestgui.py (加上 import sys),就可以用漂亮的 GUI 版 Unit test 工具啦!而且是選檔案直接載入 test case,不用辛苦地填入 package/module path。

unittestgui_wxPython

附帶一提,site-package 的設計簡單易懂,了解後以後要手動裝 module 也不成問題啦!

最後提一下 IPython 的相關訊息。IPython 比原本 python 內建的 interpreter 強太多了,是寫 python 的必備工具之一。IPython 首頁有列出下載的頁面,點 xxx.exe 下載執行,自然會裝到 site-packages 裡。官網首頁下方有指出 Windows 下要另外裝 PyReadline 才能正確執行 IPython,不然會沒顏色,且按 Tab 補字時會丟出 exception。IPython 的執行方式有幾種,這裡列出其中兩種:

  • console mode:python Python26Scriptsipython
  • GUI mode:python Python26Libsite-packagesIPythonfrontendwxipythonx.py

雖然是一樣的東西,總覺得 Unix 下用起來比較方便。

2009-02-23 更新

Scott Tsai 提醒,修正文中和 vim 相關的說明。沒想到才剛在 Plurk 提到「以後提到 Scott Tsai 可以加超連結了」,馬上就用到了。

2009-03-08 更新

修正 vim indent 的目錄路徑,並補上 IPython 的相關訊息。

沒有留言:

張貼留言