哪種Python的IDE更適合你?
譯文【51CTO.com快譯】哪一種Python的集成開發(fā)環(huán)境(IDE)更適合你?以下對IDLE、Komodo、LiClipse、PyCharm、Visual Studio Code的Python擴展,Visual Studio的Python工具,以及Spyder這7種Python IDE在功能和易用性方面的組合進行分析和闡述。
在用來衡量編程語言的流行性和成功性的量標準中,一個主要指標是可以使用的開發(fā)環(huán)境的數量。Python近幾年得到廣泛應用,因此也掀起開發(fā)商對支持集成Python的IDE的開發(fā)熱潮,而這些工具既面向組織的編程人員,又可以面向將Python用于科學工作和分析編程的工作人員。
獲得Python支持的一些IDE涵蓋了各種用例。有一些是專門為Python構建的,而另外一些則是通過附加組件支持Python或已使用Python特定的擴展進行改進的多語言IDE。盡管許多開發(fā)商都致力使其IDE成為一種通用解決方案,但這取決于Python開發(fā)人員不同的需求和標準。
如今,許多IDE都是為特定語言和任務配備附加組件的框架,而不是由內而外編寫的促進特定編程語言開發(fā)的應用程序。為此,用戶對IDE的選擇可能取決于其是否有使用類似IDE的經驗。
對于那些沒有這方面經驗的組織和人員來說,PyCharm是一個很好的起點。它對入門者很友好,并且功能不受影響。實際上,它具有所有IDE中最常用的功能,雖然其中許多功能只能在付費版本中可用,但免費版本的很多功能也可以為剛入門的開發(fā)人員提供幫助。
對于已經熟悉Eclipse和Microsoft Visual Studio的開發(fā)人員來說,LiClipse和用于Visual Studio的Python工具(PTVS)是很好的選擇。這兩者都是成熟的開發(fā)環(huán)境,可以很好地集成Python。然而,它們也是龐大而復雜的應用程序,因此也會耗費更多的資源。如果已經精通其中的一個,那么它將是開展Python工作的一個很好選擇。
微軟公司的Visual Studio 代碼編輯器(包含微軟公司的Python擴展程序)比Visual Studio輕巧得多。Visual Studio代碼憑借其廣泛的擴展而受到用戶的歡迎,例如,項目的開發(fā)人員不僅可以使用Python,而且可以使用HTML和JavaScript來擴展項目的組合,以補充該項目的工作流程。
ActiveState公司的Komodo IDE的Python版本適合那些已經將Komodo IDE用于其他編程語言的人員,并且具有一些獨特的功能(例如正則表達式計算器)可以擴大其吸引力。而Komodo值得入門者和行業(yè)專家的密切關注。
Spyder更適合在像Anaconda這樣的發(fā)行版本中使用Jupyter記事本或其他科學計算工具,而不是作為Python的開發(fā)平臺。而IDLE最好用于快速腳本編寫,不過它也可能會落后于帶有Python語法插件的獨立代碼編輯器。
1.IDLE
IDLE是大多數Python安裝中包含的一種集成的開發(fā)和學習環(huán)境,可以視為默認的Python IDE。但是,IDLE絕不能替代技術成熟的IDE。它更像是一個精美的文件編輯器。盡管如此,IDLE仍然是開發(fā)人員了解Python語言的默認選項之一,并且伴隨著每個Python版本(尤其是Python 3.5)的改進,IDLE也得到了逐步改進。
IDLE完全由Python的默認安裝附帶組件構建。除了CPython解釋器本身之外,還包括Tkinter接口工具包。以這種方式構建IDLE的一個優(yōu)點是能夠以一組一致的行為跨平臺運行。而其缺點是,其接口的運行速度可能非常慢。例如,從腳本向控制臺中打印大量文本比直接從命令行運行腳本要慢得多。
IDLE有一些直接的便利和好處。它為Python提供了一個內置的REPL(讀取、評估、打印、循環(huán))平臺或交互式控制臺。實際上,這個交互式外殼程序是啟動IDLE時呈現給用戶的第一個內容,而不是一個空的編輯器。IDLE還包含在其他IDE中找到的一些工具,例如在按下Ctrl+Space鍵時為關鍵字或變量提供建議,以及集成調試器。但是與其他IDE相比,大多數實現的功能都是原始的,并且由于Tkinter用戶界面(UI)組件選擇比較有限。可用于IDLE的第三方附加組件(例如IdleX)的集合遠不及其他IDE那么豐富。
IDLE沒有項目的概念,因此沒有關于如何使用Python虛擬環(huán)境的規(guī)定。唯一可識別的方法是創(chuàng)建一個虛擬環(huán)境,并從其上一代安裝的Python中調用IDLE。使用其他工具(例如測試套件)只能人工完成。
總而言之,IDLE更適合兩種情況:第一種情況是為了學習編寫一個快速的Python腳本,并且需要預先配置的環(huán)境來完成這一點。第二情況是適合剛入門的初學者學習。
IDLE集成Python是免費的,但其功能集規(guī)模很小,因此更適合初學者。
2.Komodo IDE
Komodo IDE(現在已經更新到第12版)既可以用作獨立的多語言IDE,又可以與ActiveState的語言平臺集成。Python是Komodo支持的多種語言之一,也是ActiveState提供自定義運行時構建的多種語言之一。
在安裝時,Komodo會通知用戶在系統(tǒng)上發(fā)現哪些編程語言、程序包管理器和其他開發(fā)工具的有關信息。這是開箱即用的一種好方法。可以肯定的是,Komodo使用的是正確的Python版本,并正確安裝的Git。
當組織為特定語言創(chuàng)建一個新項目時,Komodo會提供大量選項來預配置該項目。對于Python項目,可以從幾種常見的Web框架之一中進行選擇。而其示例項目包含許多受到支持的語言(包括Python)的示例和教程。文件中的導航非常順暢,因為文件中有一個下拉式搜索小部件,可以查找所有方法和功能。其按鍵綁定是可配置的,可以通過模擬其他編輯器的下載軟件包(例如Sublime Text)來添加。
讓用戶喜歡采用Komodo的原因是它包含了適用于各種語言的一些工具,例如正則表達式生成器。另一個強大的功能是位于頂部中心的“轉到所有內容”欄,用戶可以在其中鍵入內容在當前項目或Komodo界面中找到大多數內容,而當它出現時,總是會受到用戶的歡迎。
對于代碼檢查工具,Komodo可以與PyChecke、Pylint、pep8或Pyflakes集成,盡管對它們的支持是單獨連線的,而不是通過集成代碼檢查工具的通用機制獲得的。
Komodo 12最突出的一些新功能可以與ActiveState平臺的集成。開發(fā)團隊可以在配置和構建語言的自定義運行時,獲得他們需要的所有軟件包。這是為了確保開發(fā)人員不必自己為項目設置運行時間和依賴項;他們可以在預裝所有內容的情況下簡單地獲取相同的自定義運行時間。
Komodo也有一些缺點,其一個最大的問題是對使用Python虛擬環(huán)境的支持有限。必須人工創(chuàng)建venv,然后將項目的Python運行時與這個venv相關聯(lián)。面切換給定項目的venv需要深入到該項目的設置。
Komodo 12的本地Git集成遠沒有其他IDE那么強大。盡管用戶可以使用附加組件擴展Komodo的功能,但Komodo所需的附加組件沒有Visual Studio Code的附加組件那樣多。而且,其中許多附加組件在Komodo 12中仍無法使用。
Python版本的Komodo IDE不僅對Python提供強大的支持,而且還融合了對其他編程語言的支持。
3.LiClipse/PyDev
Eclipse基金會開發(fā)的Java驅動的Eclipse編輯器通過附加組件支持多種語言。對Python的支持來自名為PyDev的加載項,用戶可以通過兩種方式使用它:也就將其人工添加到現有的Eclipse安裝中,或者使用PyDev下載名為LiClipse的Eclipse預打包版本。
除了對Python的支持之外,LiClipse還包括通過Eclipse的EGit插件進行的Git集成,對Python的Django Web框架的支持,甚至支持Jython(Jython是在JVM上運行的Python變體)。
LiClipse充分利用了Eclipse UI中的常規(guī)功能??梢灾匦掠成渌忻荑€,并且LiClipse附帶了一組用于Emacs仿真的密鑰綁定庫。通過“透視圖”系統(tǒng),用戶可以根據當前的任務(開發(fā)、調試或使用項目的Git存儲庫)在多個面板視圖之間進行切換。
LiClipse軟件包中包含的插件提供一些更好的功能。重構歷史可以使用戶在進行正式重構時跟蹤整個代碼庫中的更改,這在理論上可以通過Git來完成,但是采用專用工具更加方便。另一個很好的功能是能夠在引發(fā)一個或多個異常(包括用戶已定義的異常)時自動觸發(fā)斷點。
雖然LiClipse不會自動檢測到項目中是否存在venv,但用戶始終可以人工配置和添加venv,并且LiClipse與Pipenv集成以創(chuàng)建和管理它們(假設基本Python安裝中存在Pipenv)。LiClipse有一個很好的GUI瀏覽器,可以查看在哪些Python venv中安裝了哪些軟件包,并且用戶也可以從這個GUI運行pip。
LiClipse/PyDev也有一些缺點,例如很難進行諸如從requirements.txt文件安裝新軟件包之類的事情,并且在激活環(huán)境的情況下創(chuàng)建Shell會話也很困難。
LiClipse內置了自己的代碼分析工具,也可以使用Mypy和Pylint。但是,與Komodo一樣,這些選擇都是硬連接到應用程序的。沒有一種簡單的方法可以將列表中沒有的其他工具整合在一起。同樣,一個直接集成到LiClipse中的測試框架是單元測試,可以通過為項目創(chuàng)建一種特殊的運行配置來進行。
LiClipse將PyDev插件打包在輕量級的Eclipse中,但是PyDev也可以添加到現有的Eclipse安裝程序中。
4.PyCharm
JetBrains為各種語言開發(fā)了一系列IDE,所有這些IDE都基于相同的核心源代碼。 PyCharm是他們的Python IDE,其構建旨在支持Python開發(fā)人員的獨特工作模式和實踐。
從用戶首次創(chuàng)建PyCharm項目的那一刻起,對工作流程的關注就已經顯而易見。用戶可以從自己選擇的解釋器中選擇一個虛擬環(huán)境,其中包含一個示例main.py文件。采用便捷的圖形用戶界面(GUI)使用戶可以使用pip將模塊安裝到虛擬環(huán)境中,并且其IDE甚至可以自動檢測requirements.txt文件,提供自動安裝缺少的依賴項的功能。
用戶可能會發(fā)現在IDE中同樣要關注工作細節(jié)。例如,如果使用Alt+Shift+F10按鍵組合在項目中運行文件,PyCharm會記住這一運行配置以供將來使用。這對于可能具有多個入口點的項目來說很方便。當用戶在PyCharm中打開一個加載項目的命令行實例時,PyCharm會自動激活該項目的虛擬環(huán)境。對于使用低功耗筆記本電腦的用戶,PyCharm的“省電模式”會禁用背景代碼分析,以防止電池耗盡。
重構項目也有專用的PyCharm工具。這不只是重命名函數或方法;用戶可以更改所討論代碼的大多數方面(例如更改函數簽名),并預覽這一過程中將會受到影響的內容。PyCharm提供了自己的代碼檢查工具,但是第三方插件使得使用Pylint成為可能。
Python項目受益于強大的測試套件,但是由于涉及到樣板,開發(fā)人員在創(chuàng)建它們時通常會拖延。PyCharm的自動測試生成功能使用戶可以為現有代碼生成框架測試套件,然后根據需要進行測試。如果已經進行測試,則可以配置運行概要文件得以執(zhí)行,并支持所有流行的測試框架(pytest、unittest、nose等)。此外還有其他自動快捷方式。
PyCharm可以通過數千個插件進行擴展和調整,這些插件可以通過PyCharm的用戶界面(UI)直接安裝。這包括對Python(CSV和Markdown)、第三方工具(Docker)使用的公共數據或文本格式的支持,以及對其他語言(R和Rust)的支持。
PyCharm的社區(qū)版本涵蓋大多數用例,但專業(yè)版添加了一些在企業(yè)設置中有用的關鍵功能,例如開箱即用的Cython支持、代碼覆蓋率分析工具和配置文件。
PyCharm的豐富功能集,即使是免費版本,也使其成為大多數Python開發(fā)方案的有力選擇。
5. Visual Studio Code的Python擴展
微軟Visual Studio Code的爆炸式增長和廣泛普及推動了附加組件的開發(fā),這些附加組件幾乎支持每種編程語言和數據格式。Visual Studio Code最著名的Python插件也是由微軟公司開發(fā)的,編輯器和附加組件共同構成了Python開發(fā)的最佳解決方案之一。
在安裝后,微軟的Python擴展程序還將安裝對Jupyter記事本,該記事本可在編輯器中直接打開和使用。Python擴展還提供了Pylance,這是一種語言服務器,可以通過Pyright工具提供整理和類型檢查。這些組件一起提供了涵蓋絕大多數開發(fā)方案的解決方案。
Visual Studio Code的Python擴展的一個主要缺點是,缺少用于創(chuàng)建新Python項目并配置其所有元素的常規(guī)設置過程(例如向導)。因此必須人工執(zhí)行每個步驟:創(chuàng)建虛擬環(huán)境、配置路徑等。它還缺乏與Pipenv等Python項目管理工具的全面集成。對于給定的項目,完全可以通過命令行進行人工設置,這是因為沒有在Visual Studio CodeCode的Python擴展中使用它們的工具。盡管存在對某些單獨框架的支持(例如對Django模板的調試支持),但仍必須人工配置這些框架。
從好的一方面來說,Visual Studio Code自動檢測項目目錄中的虛擬環(huán)境,并在用戶在編輯器中打開終端窗口時更多地使用它們。這樣省去了人工激活環(huán)境的麻煩。Visual Studio Code還可以檢測使用Poetry(Python項目管理工具)創(chuàng)建的虛擬環(huán)境。
Visual Studio Code的另一個強大功能是命令調色板,用戶只需鍵入一個或兩個單詞就可以找到幾乎任何命令或設置。在搜索單詞前加上“Py”或“Python”作為前綴,將獲得更加集中的搜索結果。而且,Python擴展本身支持各種各樣的靜態(tài)代碼分析工具和代碼格式化工具。
Visual Studio Code通過Python擴展很好地支持的一件事是發(fā)現和執(zhí)行單元測試。 Python的原生單元測試和第三方pytest均受支持。運行調色板中的“Python:發(fā)現測試”命令將逐步完成測試的發(fā)現,并在底部的狀態(tài)欄上設置測試運行器按鈕。各個測試項目甚至都具有嵌入式注釋,可讓用戶重新運行或調試它們。這是Python擴展可以完成許多事情的模型。
Python擴展集中于Python使用最廣泛的部分,而將更深奧的部分留給第三方開發(fā)。例如并不支持Python的Cython超集,該超集可讓用戶將Python編譯為C語言。第三方擴展提供了Cython語法突出顯示功能,但并沒有集成Cython工作流。
Visual Studio Code的Python擴展的最大優(yōu)點是,它可以從Visual Studio Code可用的擴展的靈活性中受益。例如,可以自由地重新映射按鍵綁定,并且可以使用更多的主題來使Visual Studio Code的字體或調色板更容易接受。
Visual Studio Code的開放式架構允許支持多種語言,其中Python是主要語言之一。
6.適用于Visual Studio 2019的Python工具
如果用戶已經以某種形式使用了Visual Studio,并且正在添加Python,那么采用適用于Visual Studio的Python工具插件是很有意義的。微軟的開源插件提供了對許多常見Python框架的預打包功能,并且使Visual Studio界面提供了Python調試和部署功能,其方式與其他的語言相同。
Visual Studio現在為Python提供了強大的支持,無論用戶要構建哪種項目,都需要采用考慮支持該語言的IDE。
有兩種方法可以在Visual Studio上使用Python進行設置:一是用戶可以將Python工具添加到Visual Studio的現有安裝中,二是從頭開始安裝Visual Studio并自動添加Python工具。而兩條方法都是殊途同歸的,Visual Studio安裝帶有許多常見Python應用程序類型的模板。
開箱即用的Visual Studio的Python 工具可以創(chuàng)建使用一些廣泛使用的Python Web框架的項目:例如Flask、flaskwithjade(一種模板語言)、Django和Bottle微型框架。還提供通用Web服務的模板、簡單的命令行應用程序、使用Python的Windows IoT核心應用程序,以及從現有Python代碼創(chuàng)建Visual Studio項目的選項。
Python運行時也可以自動安裝(Python 3.7.8和Python 2.7.18)。用戶甚至可以為需要使用Python的項目安裝Miniconda。還可以使用cookiecutter項目模板系統(tǒng)提供Scikit學習項目的模板。
當用戶使用這些框架創(chuàng)建新項目時,Visual Studio會檢查并確保用戶已經具有依賴項。如果沒有,它將為用戶提供一些選擇。用戶可以創(chuàng)建一個Python虛擬環(huán)境,并在其中放置所需的軟件包。用戶可以在系統(tǒng)范圍內將軟件包安裝到Python解釋器中,或者可以人工將依賴項添加到項目中。
一個很好的做法是Visual Studio記錄了設置項目時所采取的所有步驟,因此用戶知道已進行了哪些更改以及哪些內容都位于何處。Visual Studio還可以智能地檢測到requirements.txt文件的存在,并可以為用戶的項目創(chuàng)建一個虛擬環(huán)境,并預先安裝這些需求。如果要移植一個包含虛擬環(huán)境的現有項目,它們也會被自動檢測并包含在內。
Visual Studio的解決方案資源管理器不僅包含與每個Python項目相關的文件,而且還包含隨附的Python環(huán)境以及其中安裝的任何Python包。用戶在界面中右鍵單擊環(huán)境,可以交互地安裝軟件包和自動生成需求文件,或將文件夾、Zip存檔或文件添加到項目的搜索路徑。Visual Studio會自動為已經安裝的環(huán)境生成IntelliSense索引,因此編輯器的即時建議是基于用戶正在使用的Python環(huán)境中安裝的內容,而不僅僅是當前文件或項目。
當用戶啟動用于測試的網絡應用程序時,通過工具欄中的綠色箭頭啟動圖標,Visual Studio的應用程序啟動器會彈出并打開默認的網絡瀏覽器(或用戶選擇的瀏覽器),并將其指向應用程序的地址和端口。生成菜單具有發(fā)布選項,可以將用戶的應用程序部署到包括Microsoft的Azure應用程序服務在內的各種云服務上。
選用于Visual Studio的Python工具提供了一個內置工具,用于運行Pylint和Mypy代碼分析器。與依賴外部程序包的其他Visual Studio功能一樣,如果用戶尚未設置這些程序包,則Visual Studio會嘗試安裝其中一個程序包。用戶還可以在虛擬環(huán)境中進行設置。
很多用戶對沒有支持Cython的項目感到失望,其項目允許將Python模塊編譯為C擴展、DLL和獨立的可執(zhí)行文件。 Cython使用Visual Studio作為其編譯器之一,但是Visual Studio的Python工具中不支持Cython格式的文件,也不直接支持在Visual Studio中編譯Cython模塊。
Microsoft在Visual Studio中提供了對Python作為開發(fā)語言的支持,其中包括對Web框架的支持。
7.Spyder
大多數Python的IDE都是通用的,這意味著它們適用于任何類型的Python開發(fā)環(huán)境,也適用于與Python一起使用其他語言進行開發(fā)。Spyder專注于提供用于科學工作的IDE,而不是提供Web開發(fā)或命令行應用程序。這種專注使Spyder不如其他的IDE靈活,特別是因為它不具有即時的第三方擴展范圍(例如Visual Studio Code具有的插件),但是在一些特定領域,它仍然非常強大。
Spyder本身是用Python編寫的。這可能是它面臨最大的問題,也可能是它最好的特性,這取決于用戶將如何構建。雖然它使Spyder可供Python開發(fā)人員使用,但它也使Spyder很難作為獨立應用程序使用。它主要用于Anaconda Python發(fā)行版(或可移植的WinPython發(fā)行版),Anaconda提供了Spyder所缺乏的許多項目管理功能。
用戶可以使用安裝程序安裝Spyder單機版,但主要缺點是缺少每個項目的配置。這意味著在啟動項目時,沒有簡單的方法可以將Spyder配置為使用任何給定項目的虛擬環(huán)境;只能將Spyder作為一個整體配置使用一個特定的venv。
另一種方法是創(chuàng)建一個venv并在其中安裝Spyder,然后從該venv中啟動Spyder。但是,這需要安裝總計超過400MB的數十個軟件包,因此對于需要它的多個項目來說可能不太現實。而Spyder的另一個缺點是:無論采用哪種安裝方法,Spyder的啟動時間都比其他IDE長得多。
Spyder的特性令人關注,它使Python的科學計算工具可以在單個界面中立即使用。用戶界面(UI)的左側是通常的項目文件樹/編輯器選項卡集。但右側有兩個選項卡式窗格,專門顯示可視化和交互式工具。IPython和Jupyter記事本在它們自己的窗格中運行,同時運行生成的圖形繪圖(也可以內聯(lián)顯示,也可以只在繪圖選項卡中顯示)。
變量瀏覽器允許用戶交互式地編輯IPython會話中所有用戶創(chuàng)建的變量。而內置的分析器窗格可以讓用戶查看有關程序的哪些部分花費最多時間運行的統(tǒng)計信息。
Spyder中的按鍵綁定都是可配置的,包括用于除編輯器以外的其他窗格的按鍵綁定(例如繪圖視圖)。但是在這里,按鍵綁定只能在整個編輯器范圍內進行配置。對于單元測試,用戶將需要安裝一個單獨的模塊spyder-unittest,該模塊可與Python自己的unittest以及pytest和nose框架一起使用。
Spyder專注于數學和科學,因此它出現在Anaconda中,但它也可以用于其他類型的開發(fā)工作。
原文標題:Review: 7 Python IDEs go to the mat,作者:Serdar Yegulalp
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】