歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> Python集成開發環境完全測評與分析

Python集成開發環境完全測評與分析

日期:2017/3/6 15:51:12   编辑:關於Unix
David Mertz 介紹了 6 種 Python 集成 開發 環境,並比較了其特性、平台和穩定性。他發現 -- 或許只是無意中對開放源代碼模塊的測試 -- 免費產品似乎都比商業產品優秀。 前幾周,我有幸對一些 Python 開發環境做了一次全新的試用(或者說是首次嘗試)。這樣
  David Mertz 介紹了 6 種 Python 集成開發環境,並比較了其特性、平台和穩定性。他發現 -- 或許只是無意中對開放源代碼模塊的測試 -- 免費產品似乎都比商業產品優秀。
  前幾周,我有幸對一些 Python 開發環境做了一次全新的試用(或者說是首次嘗試)。這樣很可能會涉及從實際嘗試“最佳文本編輯器,附加命令行”方法到 Python 開發,而對於更復雜的 Python 集成開發環境 (IDE) 在 Python 討論網站上有詳盡的內容。
  
  對 Python IDE 的整體印象使我得出了一個有點吃驚的結論。這可能是某些常理的關系,也可能只是巧合。總的來說,我發現免費工具比花錢的商業工具更優秀一些。
  
  寫在測評之外
  首先我必須指出一些我沒機會嘗試的工具,您可以自己測評:
  
  PythonWare 的 PythonWorks Pro 1.1 看上去很有前途;請看其演示版的屏幕截圖。它包括 Tkinter 表單設計器、新型的編輯器、調試器和漂亮的屏幕界面。它適用於 Linux、Windows 和 Solaris。PythonWorks Pro 的價格相當昂貴:400 美元。此次測評時我沒能獲得其供測評用的最終版本。
  
  Boa Constructor 是個界面相當優秀的開放源代碼的 Python IDE,它包括 wxWindows 的表單設計器。同時具有出色的編輯器、調試器、項目管理器和一些其他組件。Boa Constructor 運行於 Win32 和 X11(需要支持合適平台的 wxWindows)。不幸的是,其主頁聲稱程序尚處於 "pre-alpha" 階段,雖然從屏幕快照來看相當優秀,我覺得還是無法推薦這樣一個尚處於早期開發階段的工具。
  
  當然,最後一類未被測評的工具是幾十種優秀的文本編輯器,具備各種 Python 友好功能,例如語法標簽高亮顯示、執行窗口、代碼合並、宏功能以及許多甚至最好的 IDE 也缺少的功能。這些工具在此次討論范圍之外,但是對於您最喜歡(並且熟悉)的文本編輯器還是有許多可以談的。
  
  橫向比較
  總會有些或多或少標准的和免費的 Python 代碼開發工具。總的來說,這些工具都是穩定、堅固、和設計周全的。另一方面,標准免費工具也並不一定那樣的華而不實。
  
  Idle 是一個純 Python 下使用 Tkinter 編寫的相當基本的 IDE。Idle 總的來說是標准的 Python 發行版,甚至是由 Guido van Rossum 親自編寫(至少最初的絕大部分)。您可在能運行 Python 和 TK 的任何環境下運行 Idle。打開 Idle 後出現一個增強的交互命令行解釋器窗口(具有比基本的交互命令提示符更好的剪切-粘貼、回行等功能)。除此之外,還有一個針對 Python 的編輯器(無代碼合並,但有語法標簽高亮和代碼自動完成功能)、類浏覽器和調試器。菜單為 TK “剝離”式;也就是點擊頂部任意下拉菜單的虛線將會將該菜單提升到它自己的永久窗口中去。特別是 "Edit" 菜單,將其“靠”在桌面一角非常實用。Idle 的調試器提供斷點、步進和變量監視功能;但並沒有其內存地址和變量內容存數或進行同步和其他分析功能來得優秀。當然,我的調試風格包括某些分散的 print 命令,但您的方法可與我不同。
  
  Idle 中的一些小問題 -- 至少在 0.6 版中存在。在我的 Win95r2 系統下(也是我試用 Idle 的系統),彈出模板總會停留在屏幕上擋住我想輸入的東西。可能更嚴重的是這很容易在運行錯誤的腳本時引起 Idle 停止響應。例如,代碼 while 1:x=1 必定會引起 Idle 自行強制關閉,而非執行代碼。顯然,不會有人故意首先編寫這段代碼,但即使在最老的 Python 交互會話也可使用 Ctrl-C 將其關閉(無可否認是有此功能的會話)。
  
  PythonWin 在許多方面都比 Idle 優秀。當然,如軟件名稱所示,這個工具是針對 Win32 用戶的。獲得 PythonWin 的最簡單方法是下載 ActivePython 2.0 發行版,該版本相當不錯(為本專欄我安裝了 build 203)。ActiveState 的 Python 包括一系列優秀的附加模塊,還有些(例如 NumPy 和 PIL)在安裝過程中可選擇作為附加下載。還有其他附加模塊;一個特別的是 PythonWin (Idle 也包括在內),另一個是針對 Windows 腳本編寫的一系列有用的 PythonCOM 擴展組件。ActiveState 還有非 Windows 發行版,但一些組件缺少與 Windows 的對應。
  
  PythonWin 使用起來非常得心應手(就像使用 Windows 那樣舒服)。它有個好用的編輯器,包括代碼合並、語法標簽高亮顯示以及代碼自動完成特性。PythonWin 和有些 IDE 一樣,不包含任何類型的表單設計器;但它提供一個優秀的調試器,具有監視、代碼檢查、交互調試窗口、斷點、和其他調試器該有的功能。最重要的是,PythonWin 很穩定,盡管有時候在 Win95r2 系統上使用時會奇怪地“停止響應”。界面上來說,PythonWin 比較簡單,但非常吸引人,很好的運用了可嵌入和可對接的元素(我有點偏愛 Idle 風格的 "many windows everywhere",它也為其他許多 IDE 所采用的)。PythonWin 還集成了 ActiveState 的 HtmlHelp 版本的 Python 說明文檔和 PythonCOM。
  
  MacPython IDE 和 PythonWin 類似,只是針對平台不同。與 Idle 和 PythonWin 類似,MacPython IDE 與針對其平台的標准發行版一同出現,並且是免費軟件(由 Just van Rossum 編寫)。安裝 MacPython 完成後,我建議首先要做的是設法取得 Advanced Editor Patch (請參閱專欄後的參考資料)。第一次安裝有點奇怪,但第三次成功了(我不知道最初的問題在哪兒);安裝這個補丁就能獲得語法標簽高亮顯示以及一些上下文敏感的函數或模塊的幫助功能。除了標准版,我不知道是否有其它 IDE 能和 Mac 平台上的 Python 一同工作。幸運的是,Just van Rossum 編寫的這個工具既非常符合 Python 的習慣,又有類似 Mac 的軟件風格。
  
  MacPython IDE 含有 Python 命令行窗口(Mac 自身沒有命令行,所以需要多步實現)、編輯器、調試器甚至還有描述器。在其環境下,還有個函數跳轉清單、模塊浏覽器和其他一些工具。調試器很優秀,只是沒有監視器。“不包括在標准發行版中”的編輯器比較原始,但是補丁加入了語法標簽高亮顯示。然而,仍然沒有代碼合並或代碼自動完成(但是安裝補丁後有上下文函數文檔行)。內建的描述器是大多 IDE 所沒有的功能,這也是 MacPython 的優勢。
  
  縱向比較
  Komodo 是個剛發布的商業 IDE。(本次測評使用更新的 beta 版;請參閱屏幕截圖)。Komodo 是 ActiveState 的 多語言、多平台 IDE。一個有趣的決定使 Komodo 基於 Mozilla 框架構建。初看起來,Web 浏覽器並不需要那麼多對 IDE 有用的代碼,但 ActiveState 充分利用了這一點(Mozilla 試圖成為一個“平台”而不僅僅是一個浏覽器,事實也的確如此)。Komodo 一年的定價為 295 美元,而免費 beta 版出現後該定價相當令人失望。而且,ActiveState 似乎違反了 Komodo 代碼所取自的 Mozilla 的公共許可的精神(可能與原文有出入)。我希望 ActiveState 決定修改許可條例,來遵守開放源代碼的慣例(可對技術支持和自動更新收費)。
  
  我試用的 Beta 1.3 支持 Python、Perl、TCL、Javascript 和 XML 的開發,並支持其他幾十種語言的語法標簽高亮顯示(但沒有更多語言支持)。Python 支持是目前最強的。現有一個支持 Win32 和 Linux 的 beta 版,並將陸續支持其他平台。
  
  以我的觀點,Komodo 更像是 PythonWin 的超集。據我所知,它不共享大多數的相同代碼庫,但使用的感覺及其相似。由於繼承了 Mozilla 的特性,Komodo 是我所測評的軟件中界面最好的一個,因為同樣的原因它也是運行最慢的。我建議不要在較老的機器上使用 Komodo;我在 366Mhz Win95r2 系統上測試,發現它能運行,但是速度不快。雖然調試器和編輯器的界面與 PythonWin 差不多,但是您可編輯許多其他語言,以及調試 Perl 和 Python;而且您可在 Linux 下運行 Komodo。Komodo 的“代碼檢查”功能非常智能和獨特。它像許多近期字處理軟件的拼寫檢查器那樣運作:在輸入的時候,有問題的代碼以下劃曲線標示;您可繼續輸入,而它會一直標示著直到您返回並修正該問題,同時也是個很好的提示。Komodo 沒有試圖內建任何表單設計器或者圖形編程,除此之外,作為 beta 版它是還是不錯的。
  
  深入內部
  現在讓我們來分析購買 Python IDE 的方法吧。人們通常認為商業產品會提供額外的功能而值得花錢購買。在某些方面的確如此。 WingIDE 的售價是 100 美元。BlackAdder 的售價是 80 美元(僅限在個人系統上使用)和 400 美元(可將 BlackAdder 的運行組件一同分發給其他人)。可惜的是,我發現這兩種產品都不足夠穩定,無法推薦給各位用於實際開發。若是不能用於實際開發的 IDE,那麼常規功能就並不值那麼多。但願這兩種產品能通過新版本或修正補丁而有所提高。
  
  BlackAdder 是在 linux 和 windows 下的基於 QT 的開發環境;請參閱屏幕截圖。在本專欄提到的產品中,該產品是唯一帶有表單設計器的一款,而且表單設計器自身做得很優秀(用於 PyQT 編程)。就象 Delphi、Visual Basic 和類似工具,您可以把小工具放置在面板上,在“屬性”表單中調整屬性與行為。元素的圖標有些呆板,特別是變灰的時候,但美觀並不是很重要。源代碼編輯器提供代碼合並和語法標簽高亮顯示,但沒有代碼自動完成提示。BlackAdder 有個相當不錯的調試器,除了缺少監視功能外其它與免費工具差不多。
  
  不幸的是,在測試 V1.0 beta 2 中,我遇到了一些嚴重的使用問題。我測試了 Mandrake、Slackware 以及 Windows 包(但沒有測試 Debian 和 Redhat,雖然我認為 Linux 的變體只是軟件包不同)。各種問題無處不在(可能一部分原因是由於必須依賴正確的操作系統版本和修正版)。例如,默認字體實在太小,在 Linux 和 Windows 系統下都無法閱讀。改變編輯器字體需要單調地一個個地修改 20 種語法標記元素的字體(沒有許多其他編輯器和 IDE 中的“繼承字體”選項)。更糟的是在 Mandrake 7.1 和定制的 Slackware 7.1 中,當 BlackAdder 啟動時,Python 解釋器“意外終止”。您可以編輯文件,但無法在 IDE 下運行。我改變 Python 路徑的嘗試 -- 指向 Python 2.0 或 Python 1.5.2 -- 成功地改變了出錯信息,但並未解決問題。而且,在 Windows 下有些 Python 腳本在 BlackAdder 中無法打開;而獲得的提示是 “X 不是一個合法的 BlackAdder 文件”。該信息沒有明顯的規律。您有可能通過某些努力解決該問題 -- 但如果花費了 400 美元購買該產品,您一定不會有好心情來為購買的產品做調試了。
  
  WingIDE 是個想當優秀的 IDE;請參閱屏幕截圖。其編輯器包括大量語言的語法標簽高亮顯示,雖然它只是個面向 Python 的工具。源代碼浏覽器對浏覽項目或模塊非常實用(表現在可導航源代碼和文檔行摘要中)。雖然沒有監視器,但調試器設計得很好。編輯器有優秀的命令自動完成和函數跳轉列表,但是沒有代碼合並。面向項目風格的 IDE 對於大型產品非常有用(在這方面,除了 Komodo 以外,它是大多免費 IDE 中較好的)。總體的界面就像增強的 Idle,使用了與許多 TK 和 XWindow 界面類似的“多窗口”排列方式。我喜歡使用對接和嵌入(這方面,並不是過多使用 MS Visual Studio 造成的),但不同的開發人員可能喜歡不同風格的窗體。WingIDE 是個很有前途的開發環境。
  
  BlackAdder 甚至 WingIDE -- 我測試的 1.0 和 1.1b3 版 -- 都因存在問題而無法推薦用作重大的開發。有許多討厭的小地方,比如許可密鑰設置過程和古怪的 -- 很可能是遺漏了 -- 工具條提示。而且,還有許多小的錯誤,比如缺少“打開最近文件”菜單項,因此,當程序運行時(不只是試驗代碼)您只能打開交互命令行解釋器窗口。但這些問題都是小問題。致命問題是 WingIDE 會在我的 Mandrake 7.1 中隨機產生分割錯誤。一旦發生該情況一切就都完了,您將丟失正在進行的任何工作。“經常保存”是個好建議,但這並不足以使 WingIDE 完全可用。
  
  總結
  對於喜歡結構化編程開發環境的程序員來說,一些優秀的 -- 還有些有前途但還不太優秀的 -- Python IDE 現在就能獲得。全面地試用一下,因為即使是商業產品也有演示版;您將發現這些 IDE 是種加快開發過程的好方法。同時,密切注意本專欄的最新文章,我們還將測評一些其他 IDE 和已被測評產品的改進版本。

Copyright © Linux教程網 All Rights Reserved