1. 程式人生 > >Python主流IDE對比:Eric VS PyCharm

Python主流IDE對比:Eric VS PyCharm

IDE, 全稱是Integrated Development Environment,翻譯過來就是整合開發環境。

顏值

Eric6是基於PyQt開發的,程式執行甚至只用一個BAT檔案來呼叫,介面相對而言略醜。PyCharm基於Java開發,自帶的主題很漂亮,風格比較統一。在顏值這一點上,無疑是PyCharm勝出。

順帶提一下WingIDE,雖然它也帶了很多款主題,但整個視窗中有些部位是不受主題控制的。舉個栗子,當你選擇深色的主題時,視窗左下角往往會有一塊白色的控制元件,忒刺眼。

速度和記憶體開銷

從啟動到開啟一個專案,捨得掐著秒錶測試了這幾款IDE,資料如下:

  • 最慢的是PyCharm,平均需要18-20秒左右。就算把外掛幹掉只剩兩個,再將Xms和Xmx引數適當調整,跑出最快的成績是16秒5;
  • Eric平均只用11秒;
  • 最快的是WingIDE, 只用7秒;

記憶體開銷上,PyCharm是大戶,動輒就是吃掉你300-400MB的記憶體。機子記憶體小的童鞋要當心了!

UI和資源編譯

開發過程中難免要對UI和資原始檔進行調整,所以IDE中自然需要將這兩項的編譯工作整合進來。

Eric6是原生支援UI和資原始檔編譯的,它的開發者早就想到了我們需要這項功能。

PyCharm作為一個專業的Python IDE,在這方面無疑略顯不足。要實現UI和資源編譯,你必須手工在外部工具設定中新增它們(具體操作請自己去問度娘),雖然設定好之後和Eric6比也沒啥區別,但總是開發者欠考慮。

不過PyCharm這個外部工具的設計還是值得讚賞的,你可以直接把打包命令(我通常用cx_freeze)直接整合進去,這樣就方便多了。

除錯

IDE中應當配備除錯模組。捨得以前常在DOS命令列下執行開發中的程式,發現錯誤再切回IDE。現在想想實在是浪費了IDE自帶的除錯模組。

使用除錯模組,首先帶來的好處是你不必手工輸入命令,也不必在DOS命令列和IDE間切來切去;其次,當遇到錯誤時,IDE的除錯模組會直接顯示出錯誤所在的位置,你不必再去手動尋找。當然除錯模組的功能不止於此,具體如何,童鞋們可以自己去深入體會。

在除錯方面,Eric6做得更好一些,在遇到錯誤時,它會自動跳到最終讓你出錯的位置,省時省力。PyCharm做法略嫌保守,它是在底部的“執行”視窗顯示一系列出錯的位置,每一個位置帶有連結,點選連結即可跳到相應的行。捨得認為,不如在保留連結功能的前提下,自動跳到最後一行出錯的位置,通常這一行是問題的關鍵。如果程式能夠做得更智慧一些則更好。

智慧縮排

在Python的語法中,縮排是非常重要的一項。開發過程中,縮排若能更智慧化一點,自然寫程式碼的速度也會快一些。

在這方面,做得最優秀的是Eric6。它的牛x之處在於,無論你的游標鍵在哪個位置,只要你按TAB鍵,程式就會根據上面的程式碼選擇合適的縮排位置。

PyCharm亦有類似的設計。它的智慧縮排操作英文名叫Emacs Indent(建議將快捷鍵TAB設定給它),國內的漢化莫名其妙地翻譯成了“巨集選項卡”,這一定是外行人乾的。

但Emacs Indent在處理整塊縮排的時候略顯無力,當我們要將整塊程式碼往前移的時候,只能使用另一項叫作“取消縮排內容”的操作,而Eric6只要一個TAB鍵就足夠了。

字型縮放

雖然我們可以在設定中給IDE的編輯器設一個特定的字號,但在實際開發中,還是免不了要適當縮放字型。尤其是大螢幕,字型適當放大一些,眼睛不至於那麼遭罪。

字型的縮放這兩款IDE都有。只不過,Eric6是早已設定好快捷鍵的(用Ctrl+=/-,或Ctrl+滾輪),而在PyCharm中,你必須手動設定這個快捷鍵。

這一輪,算打成平手好了。

自動空格補齊

PEP8的規範要求在逗號、運算子號之類的內容後面加一個空格,這一點Eric做得不錯,在你輸入一個逗號後,它會自動給你補一個空格,而PyCharm顯然考慮得沒有那麼周到。你不得不手動一個個敲空格,或留著到最後使用Reformat File功能來糾正。

程式碼自動補全和程式碼規範化

兩款IDE的程式碼自動補全做得都挺好。硬要挑出一個更好的來,我會把票投給PyCharm, 它的智慧化程度似乎(我沒法給出更精確的評價,建議自行體會)更高一些。

PyCharm除了自動補全,還會用類似拼寫檢查的方式檢查你的程式碼,當你輸入的程式碼不符合PEP8之類的規範時,PyCharm會適時提醒並對該部分程式碼作出標記。這個功能確實很貼心,我有理由相信用PyCharm會幫助我們將程式碼寫得更加規範。

此外,PyCharm還會對當前方法下所用的變數進行檢查,當有變量出現未使用、不一致、輸入錯誤等情形時,PyCharm亦會將其一一標出,讓你一目瞭然。

版本控制

版本控制也可算是IDE的標配了吧!Eric6和PyCharm都有版本控制的模組,不過捨得認為,PyCharm在這一塊做得更細一些,和GibHub結合得很好,捨得用得很趁手。

資料庫連線、檢視

這項功能只能算是可選配置了。兩款IDE都帶有資料庫內容瀏覽的功能,它的方便之處在於,我們要檢視資料庫中某項資料時,可以不必開啟專用的資料庫管理工具(比如SQLite的SQLite Expert, PostGreSQL的PG Admin,MySQL的PHPMyAdmin等),直接在IDE內檢視。

Eric6自帶一個內建的SQL瀏覽器,介面相對簡陋,而且每次開啟都必須重新設定,不夠方便。

PyCharm是通過Database Tools and SQL這款外掛來實現資料庫連線和檢視的功能,用來臨時檢視一下資料是足夠了。

書籤

在開發過程中,我們經常需要在一個文件中不同的位置間切換,此時書籤功能會給我們帶來很大的便利。

兩款IDE都有書籤功能,PyCharm做得更好一點,它的書籤不會因為你退出程式而清除。而Eric6則會在你每次退出程式時,清空你的書籤設定。

TODO

捨得在堆程式碼的時候,想到一些下一步要完善的功能之類的內容時,往往會在文件中插入一行,行首寫上“# todo,”,然後把當時的想法寫進去。這樣日後就能根據todo的標記和內容來逐漸完善自己所開發的軟體。

兩款IDE都支援Todo功能,它們會把你在當前專案中的每一行標有todo的內容都蒐集起來,以供你隨時檢視。只是在功能的完善性上,略有差距:

  • PyCharm在你輸入“# todo,”的時候就將這一行進行高亮處理,讓它變得非常醒目,Eric6預設是不會對“# todo,”作高亮處理的;
  • PyCharm的todo支援大小寫,Eric6預設只支援大寫,要想支援不同的格式,需要單獨設定;

相比之下,PyCharm以微弱的優勢勝出。

幫助文件

Eric6自帶一個WebKit核心的幫助瀏覽器,當你設定好Python/PyQt/Pyside/Qt等幫助文件的路徑後,可以在幫助選單中直接點選這些文件的連結,Eric6就會呼叫幫助瀏覽器來顯示這些文件。

PyCharm雖然有一個外部文件的設定和對應的選單命令,但功能實在太弱比,應該好好完善一下才是。

另外PyCharm雖然提供了一個Search EveryWhere的“強大”功能,但由於搜尋結果匹配往往不能盡如人意,使得此功能形如雞肋。

結語

通過上面的比較和分析,相信大家自會得出自己的答案。

  • 如果你是個顏控,請選擇PyCharm;
  • 如果你的電腦配置略低(尤其是記憶體),跑PyCharm感覺慢、卡,請選擇Eric6;
  • 大多數功能,這兩款IDE都大同小異。PyCharm沒法在逗號後居然不能自動補空格,希望開發者能在後續的版本中進一步完善;
  • 至於很多仍在使用非IDE(比如用vim、emacs、sublime text之類的編輯器)的童鞋,IDE可以讓你的開發效率更高。看上去你用這些編輯器也能完成大部分工作,但別忘了,你費盡九牛二虎之力搞定各種外掛的同時,IDE上這些功能早就已經非常成熟了,何必自己再去造輪子呢?