使用IDLE或者Python Shell來(lái)編寫(xiě)Python是非常適合于簡(jiǎn)單程序的,但是這些工具往往將大型的編程項目變成一個(gè)個(gè)充滿(mǎn)絕望和沮喪的“坑”。使用一款集成開(kāi)發(fā)環(huán)境甚至是一款好的專(zhuān)用的代碼編輯器會(huì )讓編程充滿(mǎn)樂(lè )趣,但是如何選擇呢?
各位看官,不要畏懼,我們將在這里為您解釋和揭開(kāi)無(wú)數可供選擇的神秘面紗。雖然我們無(wú)法決定哪一款最適合于你和你的項目,但是我們會(huì )闡明每一款的優(yōu)缺點(diǎn),幫助您作出最明智的決定。
為了淺顯易懂,我們將我們的工具清單分為兩部分,一部分是專(zhuān)門(mén)用于Python開(kāi)發(fā)的專(zhuān)有工具,另一部分是我們可以用于Python開(kāi)發(fā)的一般工具。我們將為每一款工具列出“為什么是它”和“為什么不是它”(優(yōu)缺點(diǎn))。最后要說(shuō)的是,他們之間并不相互排斥,所以您可以在幾乎無(wú)害的情況下自行嘗試。
但是,首先...
什么是集成開(kāi)發(fā)環(huán)境和代碼編輯器集成開(kāi)發(fā)環(huán)境(IDE,Integrated Development Environment)是專(zhuān)用于軟件開(kāi)發(fā)的程序。顧名思義,IDE集成了幾款專(zhuān)門(mén)為軟件開(kāi)發(fā)而設計的工具。這些工具通常包括一個(gè)專(zhuān)門(mén)為了處理代碼的編輯器(例如語(yǔ)法高亮和自動(dòng)補全);構建、執行、調試工具和某種形式的源代碼控制。
大部分的集成開(kāi)發(fā)環(huán)境兼容多種編程語(yǔ)言并且包含更多功能,因此一般來(lái)說(shuō)體積較大,需要時(shí)間去下載和安裝并且為了正確使用需要更高深的知識。
相比之下,一款特制的代碼編輯器可以像帶有語(yǔ)法高亮和代碼格式化功能的文本編輯器一樣簡(jiǎn)單。大多數優(yōu)秀的代碼編輯器都可以執行代碼和控制調試器,并且也可以和源碼控制系統進(jìn)行最好的交互。與集成開(kāi)發(fā)環(huán)境相比,出色的專(zhuān)用代碼編輯器往往體積更小更迅捷,但同時(shí)功能更少。
優(yōu)秀Python編程環(huán)境的要求因此在編程環(huán)境中什么是我們真正需要的呢?每個(gè)應用的功能各異,但是以下是使編程更容易的核心功能:
如果一款集成開(kāi)發(fā)環(huán)境或者編輯器不允許你保存現有工作,并在之后重新打開(kāi)時(shí)不能保持你離開(kāi)時(shí)的相同狀態(tài),那么它就不是什么集成開(kāi)發(fā)環(huán)境。
類(lèi)似的是,如果你必須退出編輯器來(lái)運行Python代碼,那么它也就是一個(gè)普通的文本編輯器。
在程序運行時(shí)支持逐步運行代碼是所有集成開(kāi)發(fā)環(huán)境和大多數優(yōu)秀代碼編輯器必備的核心功能。
支持對代碼中的關(guān)鍵詞、變量和符號快速標識可以讓閱讀和理解代碼更為輕松。
任何一個(gè)引人注目的編輯器或者集成開(kāi)發(fā)環(huán)境都會(huì )在一個(gè)“while”或者“for”語(yǔ)句末端識別冒號,并且知道下一行應該縮進(jìn)。
當然還有許多你或許關(guān)注的別的功能,例如源碼控制、擴展模型、構建和測試工具、語(yǔ)言幫助等等。但是以上所列4點(diǎn)是我認為一個(gè)出色的編輯環(huán)境所必須具備的核心功能。
當我們考慮了這些功能后,讓我們首先來(lái)關(guān)注一些可用于Python開(kāi)發(fā)的通用工具。
支持Python的通用編輯器和集成開(kāi)發(fā)環(huán)境Eclipse + PyDev網(wǎng)址:www.eclipse.org
Python工具:PyDev, www.pydev.org
如果你足夠關(guān)注開(kāi)源社區,那么你一定聽(tīng)說(shuō)過(guò)Eclipse。Eclipse實(shí)際上是一款面向Java開(kāi)發(fā)的兼容Linux, Windows和OS X的集成開(kāi)發(fā)環(huán)境。它擁有豐富的插件和擴展功能市場(chǎng),這使得Eclipse適用于各種各樣的開(kāi)發(fā)項目。
其中一個(gè)插件就是PyDev,它支持Python調試、代碼補全和交互式Python控制臺。在Eclipse中安裝PyDev非常便捷,只需從Eclipse中選擇“Help”點(diǎn)擊“Eclipse Marketplace”然后搜索PyDev。點(diǎn)擊安裝,必要的時(shí)候重啟Eclipse即可。
優(yōu)點(diǎn):如果你已經(jīng)安裝了Eclipse,安裝PyDev是非常方便快捷的,對于資深Eclipse開(kāi)發(fā)者來(lái)說(shuō),PyDev是幾乎不需要另行學(xué)習的。
缺點(diǎn):如果你只是一個(gè)Python初學(xué)者或者軟件開(kāi)發(fā)小白,掌握Eclipse還有很長(cháng)的路要走。記得我說(shuō)過(guò)集成開(kāi)發(fā)環(huán)境往往體積較大并且需要更多的知識去正確使用,那么Eclipse正是如此并且就像一袋子小芯片一樣需要你逐一了解。
Sublime Text網(wǎng)址:http://www.sublimetext.com
Sublime Text是一款非常流行的代碼編輯器,其開(kāi)發(fā)者是一名谷歌的工程師,其夢(mèng)想是使之成為更好的文本編輯器。Sublime Text支持Python代碼編輯同時(shí)兼容所有平臺,并且豐富的插件(稱(chēng)之為“包”)擴展了語(yǔ)法和編輯功能。
安裝額外的Python擴展可能會(huì )比較棘手,Sublime Text中所有的包都是用Python寫(xiě)成的,并且安裝社區擴展往往需要直接在Sublime Text中執行Python腳本。
優(yōu)點(diǎn):Sublime Text在編程社區內很受推崇。單單從代碼編輯器的角度來(lái)看,Sublime Text迅捷小巧并且具有良好的兼容性。
缺點(diǎn):盡管你可以無(wú)限期的使用測試版本但是Sublime Text不是免費軟件。在Sublime Text中安裝擴展插件可能會(huì )比較棘手,另外并不支持直接在編輯器內部執行或調試代碼。
為了充分利用Sublime Text設置,你可以閱讀我們的Python+Sublime Text設置指南,或者觀(guān)看我們更深層次的視頻教學(xué),這會(huì )幫助你在Sublime Text 3中建立一個(gè)高效的Python開(kāi)發(fā)環(huán)境。
Atom網(wǎng)址:https://atom.io/
同樣兼容所有平臺的Atom被稱(chēng)為是“21世紀可破解的文本編輯器”。開(kāi)源的Atom擁有時(shí)尚的界面、文件系統瀏覽器和擴展插件市場(chǎng),它是使用Electron構建的,Electron使用JavaScript、HTML和CSS構建跨平臺的桌面應用。Python語(yǔ)言由一款可在A(yíng)tom運行時(shí)安裝的擴展插件支持。
優(yōu)點(diǎn):得益于Electron,Atom廣泛兼容各大平臺。同樣Atom小巧且下載和載入都非常迅速。
缺點(diǎn):內置并不支持構建和調試,這些功能是由社區提供支持的。同樣由于A(yíng)tom建立在Electron框架上,所以它始終運行在JavaScript進(jìn)程中而不是作為本地應用運行。
GNU Emacs網(wǎng)址:https://www.gnu.org/software/emacs/
讓我們回到iPhone和Android之戰前,在Linux和Windows的戰爭之前甚至是在PC和Mac的戰爭前,有一場(chǎng)“編輯器之戰”。而GNU Emacs就是戰斗中的一員。伴隨著(zhù)狂熱的追隨,被稱(chēng)作“可擴展、可定制、自動(dòng)記錄、實(shí)時(shí)顯示的編輯器”GNU Emacs幾乎一直縈繞在UNIX周?chē)?/p>
終身免費且兼容任何平臺(以某種形式),GNU Emacs使用強大的Lisp編程語(yǔ)言進(jìn)行定制,并為Python開(kāi)發(fā)提供各種定制腳本。
優(yōu)點(diǎn):了解了 Emacs,使用過(guò) Emacs,你便會(huì )愛(ài)上 Emacs,Lisp作為第二語(yǔ)言,你清楚它給你的力量可以讓你為所欲為。
缺點(diǎn):定制化意味著(zhù)向多種多樣的腳本文件中編寫(xiě)(或復制粘貼)Lisp,如果沒(méi)有他人提供,那么你必須去學(xué)習Lisp并且搞懂它是如何運行的。另外,Emacs是一款非常優(yōu)秀的操作系統,如果它僅僅被當作一款優(yōu)秀的文本編輯器....
請務(wù)必參考我們的Python + Emacs設置指南來(lái)進(jìn)行設置。
VI/VIM網(wǎng)址:https://www.vim.org/
在文本編輯器戰場(chǎng)另一側是VI(又名VIM),默認安裝在幾乎每一個(gè)UNIX系統和Mac OS X系統中,VI有著(zhù)同樣的狂熱追隨。VI和VIM是一種模型編輯器,它將文本查看從文本編輯中分離。VIM在原始VI之上做了諸多改進(jìn),包括可擴展模型和就地代碼構建。VIMScripts可用于各種Python開(kāi)發(fā)任務(wù)。
優(yōu)點(diǎn):了解了VI,使用過(guò) VI,你也會(huì )愛(ài)上 VI。VIMScripts并不會(huì )嚇退你,并且你可以按你的意愿去做。
缺點(diǎn):就像Emacs一樣,你可能并不適應為了支持Python開(kāi)發(fā)環(huán)境自行查找或者撰寫(xiě)腳本,此外你可能并不清楚模型編輯器是如何工作的。另外,VI是一款不錯的文本編輯器當且僅當它擁有一個(gè)出色的操作系統。
如果您要使用這種組合,請參閱我們的Python + VIM安裝指南,我們將為您提供提示和插件建議。
Visual Studio類(lèi)型:集成開(kāi)發(fā)平臺
網(wǎng)址:https://www.visualstudio.com/vs/
Python工具:Python Tools for Visual Studio, 也稱(chēng)PTVS
與Eclipse進(jìn)行多方面比較,由Microsoft建立的Visual Studio是一款全功能集成開(kāi)發(fā)平臺。VS僅兼容Windows和Mac OS系統,它既提供了免費版(社區版)也提供了付費版(專(zhuān)業(yè)版和企業(yè)版)。VS支持各種平臺的開(kāi)發(fā),并且附帶了自己的擴展插件市場(chǎng)。
Python Tools for Visual Studio (又名PTVS)實(shí)現了在VS中進(jìn)行Python編程并且支持Python智能感知、調試和其他工具。
優(yōu)點(diǎn):就像Eclipse一樣,如果你已經(jīng)因為其他開(kāi)發(fā)程序安裝了VS那么添加PTVS時(shí)非常便捷的。
缺點(diǎn):和Eclipse相同如果僅僅為了Python,那么VS是一個(gè)大型下載任務(wù)。另外如果你是Linux系統,那你并不走運,因為VS并不支持Linux平臺。
Visual Studio Code網(wǎng)址:https://code.visualstudio.com/
Python工具:https://marketplace.visualstudio.com/items?itemName=ms-python.python
不要與完全版的VS混淆,Visual Studio Code(也稱(chēng)作VS Code)是一款兼容Linux,Mac OS X和Windows 平臺的全功能代碼編輯器。麻雀雖小但五臟俱全,VS Code開(kāi)源、可擴展并且可以對幾乎所有任務(wù)進(jìn)行配置。就像Atom一樣,VS Code建立在Electron基礎之上,因此它具有相同的優(yōu)點(diǎn)和缺點(diǎn)。
在VS Code中安裝Python支持插件非常簡(jiǎn)單,它的市場(chǎng)是一個(gè)快速點(diǎn)擊按鈕。只需要搜索Python,點(diǎn)擊安裝然后必要的時(shí)候重新啟動(dòng),VS Code就會(huì )自動(dòng)識別你的Python安裝和庫。

優(yōu)點(diǎn):同樣歸功于Electron,VS Code支持所有開(kāi)發(fā)平臺,同樣令人驚喜的是小巧的體格卻蘊含了豐富的功能,同時(shí)它也是開(kāi)源的。
缺點(diǎn):Electron的使用意味著(zhù)VS Code不是本地應用。另外,有些人可能從原則上并不使用Microsoft資源。
Python專(zhuān)用的編輯器和集成開(kāi)發(fā)環(huán)境PyCharm網(wǎng)址:https://www.jetbrains.com/pycharm/
PyCharm是最好的一個(gè)(也是唯一一個(gè))專(zhuān)門(mén)面向于Python的全功能集成開(kāi)發(fā)環(huán)境。同樣擁有付費版(專(zhuān)業(yè)版)和免費開(kāi)源版(社區版),PyCharm不論是在Windows, Mac OS X系統中, 還是在Linux系統中都支持快速安裝和使用。
開(kāi)箱即用,PyCharm直接支持Python開(kāi)發(fā)環(huán)境,打開(kāi)一個(gè)新的文件然后就可以開(kāi)始編寫(xiě)代碼。你也可以在PyCharm中直接運行和調試Python程序,并且它支持源碼管理和項目。

優(yōu)點(diǎn):這是真正的Python集成開(kāi)發(fā)環(huán)境,擁有眾多便利和支持社區。它的編輯、運行和調試功能統統開(kāi)箱即用。
缺點(diǎn):PyCharm存在加載較慢的問(wèn)題,另外對于已有的項目,默認設置可能需要調整。
Spyder網(wǎng)址:https://github.com/spyder-ide/spyder
Spyder是一款為了數據科學(xué)工作流做了優(yōu)化的開(kāi)源Python集成開(kāi)發(fā)環(huán)境。它是附在A(yíng)naconda軟件包管理器發(fā)行版中的,因此根據你的設置,或許你已經(jīng)在機器中安裝了Spyder。
Spyder引人注目的一點(diǎn)是其目標受眾是使用Python的數據科學(xué)家們。你一定會(huì )留意到這一點(diǎn),舉個(gè)例子來(lái)說(shuō),Spyder很好的集成了一些諸如SciPy、NumPy和Matplotlib這樣的公共Python數據科學(xué)庫。
Spyder擁有大部分你所期待的集成開(kāi)發(fā)環(huán)境該具備的功能,例如具備強大語(yǔ)法高亮功能的代碼編輯器,Python代碼補全,甚至是集成文件瀏覽器。
我從未在其他Python編輯環(huán)境中見(jiàn)過(guò)的一個(gè)特殊功能是Spyder的“變量瀏覽器”功能,它會(huì )以表格形式出現在集成開(kāi)發(fā)環(huán)境界面右側來(lái)展示數據。就我個(gè)人來(lái)說(shuō),雖然我并不十分需要這個(gè)功能,但是它看起來(lái)的確很整潔。如果你是一位日常用Python做數據科學(xué)工作的人,那你一定會(huì )深深?lèi)?ài)上這個(gè)獨特的功能。Spyder關(guān)于IPython或者說(shuō)Jupyter的集成也做得非常好。
總之,我認為Spyder比其他的集成開(kāi)發(fā)環(huán)境更基本,我更愿意把它看做是一款專(zhuān)業(yè)工具而不是我日常使用的編輯環(huán)境。關(guān)于Spyder比較優(yōu)秀的一點(diǎn)是它兼容Windows、macOS和 Linux系統并且是一個(gè)完全開(kāi)源軟件。

優(yōu)點(diǎn):當你是使用Anaconda Python發(fā)行版的數據科學(xué)家時(shí)你會(huì )愛(ài)上它。
缺點(diǎn):更有經(jīng)驗的Python開(kāi)發(fā)人員可能會(huì )覺(jué)得Spyder太基本了以至于不能支持每日所需的基本工作,這樣的話(huà)還不如選擇一個(gè)更為完整的集成開(kāi)發(fā)環(huán)境或者定制編輯器解決方案。
Thonny網(wǎng)址:http://thonny.org/
作為Python集成開(kāi)發(fā)環(huán)境大家庭中的新成員,Thonny被稱(chēng)作是針對新手的一款集成開(kāi)發(fā)環(huán)境。由愛(ài)沙尼亞塔爾圖大學(xué)的計算機科學(xué)學(xué)院開(kāi)發(fā)并維護的Thonny適用于全部主流平臺,并且在網(wǎng)站上附有安裝指南。
默認情況下,Thonny會(huì )和自帶捆綁的Python版本一起安裝,所以你不需要再安裝什么新的東西。更有經(jīng)驗的老手可能需要調整這個(gè)設置以便找到和使用已安裝的庫。

優(yōu)點(diǎn):你是一名Python新人小白,并且一切就緒需要一款集成開(kāi)發(fā)環(huán)境的時(shí)候你會(huì )選擇它。
缺點(diǎn):更有經(jīng)驗的Python老手可能會(huì )覺(jué)得Thonny同樣太基礎了,并且其內置解釋器只是一個(gè)工作場(chǎng)合,而不是一個(gè)可以與之共事的工具。此外,作為一款新興工具,你在遇到問(wèn)題時(shí)很有可能發(fā)現沒(méi)有現成的解決方法。
哪一個(gè)是為你量身定做的?只有你自己可以決定中意哪一款,但是還是有一些基本建議:
英文原文:https://realpython.com/blog/python/python-ides-code-editors-guide/
譯者:Quinn_W
聯(lián)系客服