Python的10大集成開發環境和代碼編輯器(指南)
Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
使用IDLE或者Python Shell來編寫Python是非常適合於簡單程序的,但是這些工具往往將大型的編程項目變成一個個充滿絕望和沮喪的「坑」。使用一款集成開發環境甚至是一款好的專用的代碼編輯器會讓編程充滿樂趣,但是如何選擇呢?
各位看官,不要畏懼,我們將在這裡為您解釋和揭開無數可供選擇的神秘面紗。雖然我們無法決定哪一款最適合於你和你的項目,但是我們會闡明每一款的優缺點,幫助您作出最明智的決定。
為了淺顯易懂,我們將我們的工具清單分為兩部分,一部分是專門用於Python開發的專有工具,另一部分是我們可以用於Python開發的一般工具。我們將為每一款工具列出「為什麼是它」和「為什麼不是它」(優缺點)。最後要說的是,他們之間並不相互排斥,所以您可以在幾乎無害的情況下自行嘗試。
但是,首先...
什麼是集成開發環境和代碼編輯器集成開發環境(IDE,Integrated Development Environment)是專用於軟體開發的程序。顧名思義,IDE集成了幾款專門為軟體開發而設計的工具。這些工具通常包括一個專門為了處理代碼的編輯器(例如語法高亮和自動補全);構建、執行、調試工具和某種形式的源代碼控制。
大部分的集成開發環境兼容多種編程語言並且包含更多功能,因此一般來說體積較大,需要時間去下載和安裝並且為了正確使用需要更高深的知識。
相比之下,一款特製的代碼編輯器可以像帶有語法高亮和代碼格式化功能的文本編輯器一樣簡單。大多數優秀的代碼編輯器都可以執行代碼和控制調試器,並且也可以和源碼控制系統進行最好的交互。與集成開發環境相比,出色的專用代碼編輯器往往體積更小更迅捷,但同時功能更少。
優秀Python編程環境的要求因此在編程環境中什麼是我們真正需要的呢?每個應用的功能各異,但是以下是使編程更容易的核心功能:
- 保存和重載代碼文件
如果一款集成開發環境或者編輯器不允許你保存現有工作,並在之後重新打開時不能保持你離開時的相同狀態,那麼它就不是什麼集成開發環境。
- 在環境內運行代碼
類似的是,如果你必須退出編輯器來運行Python代碼,那麼它也就是一個普通的文本編輯器。
- 支持調試
在程序運行時支持逐步運行代碼是所有集成開發環境和大多數優秀代碼編輯器必備的核心功能。
- 語法高亮
支持對代碼中的關鍵詞、變數和符號快速標識可以讓閱讀和理解代碼更為輕鬆。
- 自動補充代碼格式
任何一個引人注目的編輯器或者集成開發環境都會在一個「while」或者「for」語句末端識別冒號,並且知道下一行應該縮進。
當然還有許多你或許關注的別的功能,例如源碼控制、擴展模型、構建和測試工具、語言幫助等等。但是以上所列4點是我認為一個出色的編輯環境所必須具備的核心功能。
當我們考慮了這些功能後,讓我們首先來關注一些可用於Python開發的通用工具。
支持Python的通用編輯器和集成開發環境Eclipse + PyDev網址:www.eclipse.org
Python工具:PyDev, www.pydev.org
如果你足夠關注開源社區,那麼你一定聽說過Eclipse。Eclipse實際上是一款面向Java開發的兼容Linux, Windows和OS X的集成開發環境。它擁有豐富的插件和擴展功能市場,這使得Eclipse適用於各種各樣的開發項目。
其中一個插件就是PyDev,它支持Python調試、代碼補全和互動式Python控制台。在Eclipse中安裝PyDev非常便捷,只需從Eclipse中選擇「Help」點擊「Eclipse Marketplace」然後搜索PyDev。點擊安裝,必要的時候重啟Eclipse即可。
優點:如果你已經安裝了Eclipse,安裝PyDev是非常方便快捷的,對於資深Eclipse開發者來說,PyDev是幾乎不需要另行學習的。
缺點:如果你只是一個Python初學者或者軟體開發小白,掌握Eclipse還有很長的路要走。記得我說過集成開發環境往往體積較大並且需要更多的知識去正確使用,那麼Eclipse正是如此並且就像一袋子小晶元一樣需要你逐一了解。
Sublime Text網址:http://www.sublimetext.com
Sublime Text是一款非常流行的代碼編輯器,其開發者是一名谷歌的工程師,其夢想是使之成為更好的文本編輯器。Sublime Text支持Python代碼編輯同時兼容所有平台,並且豐富的插件(稱之為「包」)擴展了語法和編輯功能。
安裝額外的Python擴展可能會比較棘手,Sublime Text中所有的包都是用Python寫成的,並且安裝社區擴展往往需要直接在Sublime Text中執行Python腳本。
優點:Sublime Text在編程社區內很受推崇。單單從代碼編輯器的角度來看,Sublime Text迅捷小巧並且具有良好的兼容性。
缺點:儘管你可以無限期的使用測試版本但是Sublime Text不是免費軟體。在Sublime Text中安裝擴展插件可能會比較棘手,另外並不支持直接在編輯器內部執行或調試代碼。
為了充分利用Sublime Text設置,你可以閱讀我們的Python+Sublime Text設置指南,或者觀看我們更深層次的視頻教學,這會幫助你在Sublime Text 3中建立一個高效的Python開發環境。
Atom網址:https://atom.io/
同樣兼容所有平台的Atom被稱為是「21世紀可破解的文本編輯器」。開源的Atom擁有時尚的界面、文件系統瀏覽器和擴展插件市場,它是使用Electron構建的,Electron使用JavaScript、HTML和CSS構建跨平台的桌面應用。Python語言由一款可在Atom運行時安裝的擴展插件支持。
優點:得益於Electron,Atom廣泛兼容各大平台。同樣Atom小巧且下載和載入都非常迅速。
缺點:內置並不支持構建和調試,這些功能是由社區提供支持的。同樣由於Atom建立在Electron框架上,所以它始終運行在JavaScript進程中而不是作為本地應用運行。
GNU Emacs網址:https://www.gnu.org/software/emacs/
讓我們回到iPhone和Android之戰前,在Linux和Windows的戰爭之前甚至是在PC和Mac的戰爭前,有一場「編輯器之戰」。而GNU Emacs就是戰鬥中的一員。伴隨著狂熱的追隨,被稱作「可擴展、可定製、自動記錄、實時顯示的編輯器」GNU Emacs幾乎一直縈繞在UNIX周圍。
終身免費且兼容任何平台(以某種形式),GNU Emacs使用強大的Lisp編程語言進行定製,並為Python開發提供各種定製腳本。
優點:了解了 Emacs,使用過 Emacs,你便會愛上 Emacs,Lisp作為第二語言,你清楚它給你的力量可以讓你為所欲為。
缺點:定製化意味著向多種多樣的腳本文件中編寫(或複製粘貼)Lisp,如果沒有他人提供,那麼你必須去學習Lisp並且搞懂它是如何運行的。另外,Emacs是一款非常優秀的操作系統,如果它僅僅被當作一款優秀的文本編輯器....
請務必參考我們的Python + Emacs設置指南來進行設置。
VI/VIM網址:https://www.vim.org/
在文本編輯器戰場另一側是VI(又名VIM),默認安裝在幾乎每一個UNIX系統和Mac OS X系統中,VI有著同樣的狂熱追隨。VI和VIM是一種模型編輯器,它將文本查看從文本編輯中分離。VIM在原始VI之上做了諸多改進,包括可擴展模型和就地代碼構建。VIMScripts可用於各種Python開發任務。
優點:了解了VI,使用過 VI,你也會愛上 VI。VIMScripts並不會嚇退你,並且你可以按你的意願去做。
缺點:就像Emacs一樣,你可能並不適應為了支持Python開發環境自行查找或者撰寫腳本,此外你可能並不清楚模型編輯器是如何工作的。另外,VI是一款不錯的文本編輯器當且僅當它擁有一個出色的操作系統。
如果您要使用這種組合,請參閱我們的Python + VIM安裝指南,我們將為您提供提示和插件建議。
Visual Studio類型:集成開發平台
網址:https://www.visualstudio.com/vs/
Python工具:Python Tools for Visual Studio, 也稱PTVS
與Eclipse進行多方面比較,由Microsoft建立的Visual Studio是一款全功能集成開發平台。VS僅兼容Windows和Mac OS系統,它既提供了免費版(社區版)也提供了付費版(專業版和企業版)。VS支持各種平台的開發,並且附帶了自己的擴展插件市場。
Python Tools for Visual Studio (又名PTVS)實現了在VS中進行Python編程並且支持Python智能感知、調試和其他工具。
優點:就像Eclipse一樣,如果你已經因為其他開發程序安裝了VS那麼添加PTVS時非常便捷的。
缺點:和Eclipse相同如果僅僅為了Python,那麼VS是一個大型下載任務。另外如果你是Linux系統,那你並不走運,因為VS並不支持Linux平台。
Visual Studio Code網址:https://code.visualstudio.com/
Python工具:https://marketplace.visualstudio.com/items?itemName=ms-python.python
不要與完全版的VS混淆,Visual Studio Code(也稱作VS Code)是一款兼容Linux,Mac OS X和Windows 平台的全功能代碼編輯器。麻雀雖小但五臟俱全,VS Code開源、可擴展並且可以對幾乎所有任務進行配置。就像Atom一樣,VS Code建立在Electron基礎之上,因此它具有相同的優點和缺點。
在VS Code中安裝Python支持插件非常簡單,它的市場是一個快速點擊按鈕。只需要搜索Python,點擊安裝然後必要的時候重新啟動,VS Code就會自動識別你的Python安裝和庫。
優點:同樣歸功於Electron,VS Code支持所有開發平台,同樣令人驚喜的是小巧的體格卻蘊含了豐富的功能,同時它也是開源的。
缺點:Electron的使用意味著VS Code不是本地應用。另外,有些人可能從原則上並不使用Microsoft資源。
Python專用的編輯器和集成開發環境PyCharm網址:https://www.jetbrains.com/pycharm/
PyCharm是最好的一個(也是唯一一個)專門面向於Python的全功能集成開發環境。同樣擁有付費版(專業版)和免費開源版(社區版),PyCharm不論是在Windows, Mac OS X系統中, 還是在Linux系統中都支持快速安裝和使用。
開箱即用,PyCharm直接支持Python開發環境,打開一個新的文件然後就可以開始編寫代碼。你也可以在PyCharm中直接運行和調試Python程序,並且它支持源碼管理和項目。
優點:這是真正的Python集成開發環境,擁有眾多便利和支持社區。它的編輯、運行和調試功能統統開箱即用。
缺點:PyCharm存在載入較慢的問題,另外對於已有的項目,默認設置可能需要調整。
Spyder網址:https://github.com/spyder-ide/spyder
Spyder是一款為了數據科學工作流做了優化的開源Python集成開發環境。它是附在Anaconda軟體包管理器發行版中的,因此根據你的設置,或許你已經在機器中安裝了Spyder。
Spyder引人注目的一點是其目標受眾是使用Python的數據科學家們。你一定會留意到這一點,舉個例子來說,Spyder很好的集成了一些諸如SciPy、NumPy和Matplotlib這樣的公共Python數據科學庫。
Spyder擁有大部分你所期待的集成開發環境該具備的功能,例如具備強大語法高亮功能的代碼編輯器,Python代碼補全,甚至是集成文件瀏覽器。
我從未在其他Python編輯環境中見過的一個特殊功能是Spyder的「變數瀏覽器」功能,它會以表格形式出現在集成開發環境界面右側來展示數據。就我個人來說,雖然我並不十分需要這個功能,但是它看起來的確很整潔。如果你是一位日常用Python做數據科學工作的人,那你一定會深深愛上這個獨特的功能。Spyder關於IPython或者說Jupyter的集成也做得非常好。
總之,我認為Spyder比其他的集成開發環境更基本,我更願意把它看做是一款專業工具而不是我日常使用的編輯環境。關於Spyder比較優秀的一點是它兼容Windows、macOS和 Linux系統並且是一個完全開源軟體。
優點:當你是使用Anaconda Python發行版的數據科學家時你會愛上它。
缺點:更有經驗的Python開發人員可能會覺得Spyder太基本了以至於不能支持每日所需的基本工作,這樣的話還不如選擇一個更為完整的集成開發環境或者定製編輯器解決方案。
Thonny網址:http://thonny.org/
作為Python集成開發環境大家庭中的新成員,Thonny被稱作是針對新手的一款集成開發環境。由愛沙尼亞塔爾圖大學的計算機科學學院開發並維護的Thonny適用於全部主流平台,並且在網站上附有安裝指南。
默認情況下,Thonny會和自帶捆綁的Python版本一起安裝,所以你不需要再安裝什麼新的東西。更有經驗的老手可能需要調整這個設置以便找到和使用已安裝的庫。
優點:你是一名Python新人小白,並且一切就緒需要一款集成開發環境的時候你會選擇它。
缺點:更有經驗的Python老手可能會覺得Thonny同樣太基礎了,並且其內置解釋器只是一個工作場合,而不是一個可以與之共事的工具。此外,作為一款新興工具,你在遇到問題時很有可能發現沒有現成的解決方法。
哪一個是為你量身定做的?只有你自己可以決定中意哪一款,但是還是有一些基本建議:
- Python開發新人應該嘗試越少定製化越好的解決方案,越少阻礙,越好
- 如果你將文本編輯器用於其他用途(如網頁或文件編輯)那麼查找代碼編輯器方案。
- 如果你已經在使用其他開發軟體,你可能會發現將Python功能添加到現有工具集更容易。
英文原文:https://realpython.com/blog/python/python-ides-code-editors-guide/
譯者:Quinn_W
※Python async/await 介紹
※強大的視頻(中美日)下載器:Lulu
TAG:Python部落 |