安裝和配置Visual Studio Code用于Python開發(fā)
程序員可以使用的最酷的代碼編輯器之一——Visual Studio Code[1]——是一個(gè)開源的、可擴(kuò)展的、輕量級的編輯器,它可以在所有平臺(tái)上使用。正是這些特性使得Microsoft[2]的Visual Studio Code非常受歡迎,并且是一個(gè)很好的Python開發(fā)平臺(tái)。 在本文中,你將了解在Visual Studio Code中進(jìn)行Python開發(fā),包括怎樣:
我們假設(shè)你熟悉Python開發(fā),并且已經(jīng)在系統(tǒng)上安裝了某種形式的Python (Python 2.7、Python 3.6/3.7、Anaconda或其他)。確保你的Ubuntu和Windows的屏幕截圖和演示程序都可用。由于Visual Studio Code可以運(yùn)行在所有主要平臺(tái)上,你可能會(huì)看到略有不同的UI元素,可能需要修改某些命令。 安裝并配置Visual Studio Code用于Python開發(fā) 在任何平臺(tái)上安裝Visual Studio Code都是非常容易[3]的。Windows[4]、Mac[5]和Linux[6]都有完整的安裝教程,編輯器每月更新一次,提供新特性和bug修復(fù)。你可以在Visual Studio Code網(wǎng)站[7]上找到所有信息: 你可能會(huì)疑惑,Visual Studio Code(簡稱VS Code)除了與其基于windows的大型同名軟件Visual Studio[8]名字相同之外,幾乎沒有其他相同之處。 Visual Studio Code除具有對多種語言的內(nèi)置支持之外,還具有對其他語言豐富的生態(tài)系統(tǒng)支持的擴(kuò)展模型。VS Code每月更新一次,你可以在Microsoft Python博客[9]上了解最新情況。微軟甚至公開VS Code GitHub repo[10]源來允許任何人克隆和貢獻(xiàn)代碼。(Cue the PR flood.) VS Code用戶界面[11]有很好的文檔說明,所以我就不在這里贅述 用于Python開發(fā)的擴(kuò)展 如上所述,VS Code通過良好文檔化的擴(kuò)展模型[12]支持多種編程語言的開發(fā)。Python擴(kuò)展[13]允許我們可以在Visual Studio Code中進(jìn)行Python開發(fā),它具有以下特性:
Visual Studio Code擴(kuò)展不僅包括編程語言功能:
下面是一些我發(fā)現(xiàn)的有用的擴(kuò)展和設(shè)置:
當(dāng)然,在使用VS Code時(shí),你會(huì)發(fā)現(xiàn)其他有用的擴(kuò)展。請?jiān)谠u論區(qū)[32]分享你的發(fā)現(xiàn)和設(shè)置! 你可以通過單擊活動(dòng)欄上的Extensions圖標(biāo)來發(fā)現(xiàn)和安裝新的擴(kuò)展和主題。你可以使用關(guān)鍵字搜索擴(kuò)展,以多種方式對結(jié)果進(jìn)行排序,并快速輕松地安裝擴(kuò)展。對本文來說,通過在活動(dòng)欄的Extensions項(xiàng)中輸入python并點(diǎn)擊Install來安裝Python擴(kuò)展: 你可以以相同的方式查找并安裝上面提到的任何擴(kuò)展。 Visual Studio Code配置文件 值得一提的是,Visual Studio Code可以通過user and workspace settings[33](用戶和工作區(qū)設(shè)置)進(jìn)行高度配置。 用戶設(shè)置是跨所有Visual Studio Code實(shí)例的全局設(shè)置,而工作區(qū)設(shè)置是特定文件夾或項(xiàng)目工作區(qū)的本地設(shè)置。工作區(qū)設(shè)置為VS Code提供了極大的靈活性,在本文中我將始終調(diào)用工作區(qū)設(shè)置。工作區(qū)設(shè)置以.json文件的形式存儲(chǔ)在名為.vscode的項(xiàng)目工作區(qū)本地文件夾中。 開始一個(gè)新的Python程序 讓我們從一個(gè)新的Python程序開始探索Visual Studio Code中的Python開發(fā)。在VS Code中,按下∧Ctrl+N打開一個(gè)新文件。(也可以從菜單中選擇File, New來打開) 注意:Visual Studio Code UI提供了命令面板[34],你可以在其中搜索和執(zhí)行任何命令,而不需要離開鍵盤。使用∧Ctrl+Shift+P打開命令面板,輸入File: New File,然后按Enter鍵打開一個(gè)新文件。 無論你如何打開一個(gè)新文件的,你都會(huì)看到一個(gè)VS Code窗口,它看起來類似于下面的圖: 打開新文件之后,你就可以輸入代碼了。 輸入Python代碼 對于我們的測試代碼,讓我們快速編寫Sieve of Eratosthenes[35] 項(xiàng)目(它查找所有小于給定數(shù)字的素?cái)?shù))。在剛剛打開的新選項(xiàng)卡中輸入以下代碼: 等等,發(fā)生了什么?為什么Visual Studio Code沒有進(jìn)行任何關(guān)鍵字高亮顯示、自動(dòng)格式化或其他有用的事情呢?它做了什么? 答案是,現(xiàn)在VS Code還不知道它處理的是哪種文件。這個(gè)緩沖區(qū)名為Untitled-1,在窗口的右下角查看,你會(huì)看到Plain Text 字樣。 要激活Python擴(kuò)展名,將文件(通過從菜單中選擇File、Save、從命令面板中輸入File: Save File,或者只使用∧Ctrl+S)保存為sieve.py。VS Code將看到.py擴(kuò)展名,并正確地將文件解釋為Python代碼。現(xiàn)在你的窗口看起來應(yīng)該是這樣的: 這就好多了!VS Code自動(dòng)將文件重新格式化為Python,你可以通過檢查左下角的語言模式來驗(yàn)證這一點(diǎn)。 如果你安裝了多個(gè)Python版本 (如Python 2.7、Python 3或者Anaconda)。你可以通過單擊語言模式指示器或從命令面板中選擇Python: Select Interpreter,來更改VS Code默認(rèn)使用哪種Python解釋器。VS Code默認(rèn)支持使用pep8進(jìn)行格式化[36],你也可以選擇black或yapf。 現(xiàn)在我們來添加Sieve代碼的其余部分。要查看IntelliSense是否在工作,直接輸入這段代碼,不能剪切和粘貼,你會(huì)看到如下所示: 下面是一個(gè)基本的Sieve of Eratosthenes的完整代碼: 當(dāng)你輸入這段代碼時(shí),VS Code會(huì)自動(dòng)縮進(jìn)for和if語句下面的行,添加結(jié)束括號(hào),并為你提供建議。這就是IntelliSense為你帶來的力量。 運(yùn)行Python代碼 現(xiàn)在代碼已經(jīng)完成,你可以運(yùn)行它了。不需要離開編輯器就可以做到這一點(diǎn):Visual Studio Code可以直接在編輯器中運(yùn)行這個(gè)程序。保存文件(使用∧Ctrl+S),然后在編輯器窗口右鍵單擊,選擇Run Python file in Terminal : 你應(yīng)該會(huì)看到終端窗格出現(xiàn)在窗口的底部,并顯示代碼輸出。 Python Linting支持 你在輸入時(shí)可能會(huì)看到一個(gè)彈出窗口,提示無法使用linting。你可以從該彈出窗口中快速安裝linting支持,它默認(rèn)為PyLint。VS Code還支持其他linter。以下是撰寫本文時(shí)可用的完整列表:
Python linting頁面[37]有關(guān)于如何設(shè)置每個(gè)linter的完整詳細(xì)信息。 注意:linter的選擇是一個(gè)項(xiàng)目工作區(qū)設(shè)置,不是全局用戶設(shè)置。 編輯現(xiàn)有Python項(xiàng)目 在Sieve of Eratosthenes示例中,你創(chuàng)建了一個(gè)Python文件。作為一個(gè)例子這很不錯(cuò),但是很多時(shí)候,當(dāng)你需要?jiǎng)?chuàng)建大型項(xiàng)目,并在很長的一段時(shí)間內(nèi)要在它上面進(jìn)行開發(fā)。一個(gè)典型的新項(xiàng)目工作流程可能是這樣的:
在Python項(xiàng)目上使用Visual Studio Code (而不是單個(gè)Python文件)可以提供更多的功能,可以讓VS Code發(fā)揮它的特長。我們來看看它是如何處理一個(gè)大型項(xiàng)目的。 在前幾年的后期,當(dāng)我還是一個(gè)很年輕的程序員時(shí),我編寫了一個(gè)計(jì)算器程序,它使用Edsger Dijkstra的調(diào)度場算法(shunting yard algorithm)[38]適配來解析用中綴表示法編寫的等式。 為了演示Visual Studio Code以項(xiàng)目為中心的特性,我開始在Python中將調(diào)度場算法(shunting yard algorithm)重新創(chuàng)建為一個(gè)Python等式計(jì)算庫[39]。要繼續(xù)后續(xù)操作,請隨意將它從repo克隆到本地。 在本地創(chuàng)建文件夾后,你可以在VS Code中快速打開整個(gè)文件夾。我喜歡的方法(如上所述)修改如下,因?yàn)槲乙呀?jīng)創(chuàng)建了文件夾和基本文件: VS Code理解并將使用以這種方式打開時(shí)它讀取到的任何virtualenv[40]、pipenv[41]或conda[42]環(huán)境。你甚至不需要一開始就啟動(dòng)虛擬環(huán)境!你甚至可以從用戶界面打開文件夾,從菜單中使用 File,Open Folder 打開文件夾,或使用快捷鍵∧Ctrl+K、∧Ctrl+O從鍵盤打開文件夾,或者從命令面板使用File: Open Folder打開。 對于我的等式計(jì)算庫項(xiàng)目,以下是我將看到的: 當(dāng)Visual Studio Code打開文件夾時(shí),它還會(huì)打開上次打開的文件。(這是可配置的)。你可以打開、編輯、運(yùn)行和調(diào)試任何列出的文件。左側(cè)活動(dòng)欄中的Explorer視圖提供文件夾中所有文件的視圖,并顯示當(dāng)前選項(xiàng)卡集中有多少未保存的文件。 測試支持 VS Code可以自動(dòng)識(shí)別在unittest框架、pytest或Nose框架中編寫的現(xiàn)有Python測試[43](如果這些框架已經(jīng)安裝在當(dāng)前環(huán)境中)。我在unittest中為等式計(jì)算庫編寫了一個(gè)單元測試[44],你可以在本例中使用它。 要運(yùn)行現(xiàn)有的單元測試,可以在項(xiàng)目中的任何Python文件中右鍵單擊并選擇Run Current Unit Test File。系統(tǒng)會(huì)提示你指定測試框架、在項(xiàng)目中搜索測試的位置以及測試使用的文件名模式。 所有這些都會(huì)作為工作區(qū)設(shè)置保存為本地.vscode/settings.json文件,你也可以在此處進(jìn)行修改。對于這個(gè)等式項(xiàng)目,你選擇unittest、當(dāng)前文件夾和*_test.py模式就好。 一旦設(shè)置好測試框架并且編輯器發(fā)現(xiàn)了測試,你可以在狀態(tài)欄上單擊Run Tests 并從命令面板中選擇一個(gè)選項(xiàng)來運(yùn)行所有的測試: 你甚至可以通過在VS Code中打開測試文件,單擊狀態(tài)欄上的Run Tests,并選擇Run Unit Test Method…和要運(yùn)行的特定測試來運(yùn)行單個(gè)測試。這使得定位單個(gè)的測試失敗和重新運(yùn)行失敗的測試變得非常簡單,也是一個(gè)很棒的節(jié)省時(shí)間的方法!測試結(jié)果顯示在Python Test Log下的Output 窗口中。 調(diào)試支持 雖然VS Code是一個(gè)代碼編輯器,但是在VS Code中直接調(diào)試Python[45]也是可以的。VS Code提供了許多你所希望的好的代碼調(diào)試器具有的特性,包括:
你可以在活動(dòng)欄的Debug 視圖中看到它們: 調(diào)試器可以控制在內(nèi)置終端或外部終端實(shí)例中運(yùn)行Python應(yīng)用程序。它也可以附加到已經(jīng)運(yùn)行的Python實(shí)例上,甚至可以調(diào)試Django[46]和Flask[47]應(yīng)用程序。 在單個(gè)Python文件中調(diào)試代碼與使用F5啟動(dòng)調(diào)試器一樣簡單。使用F10和F11可以分別跳出和進(jìn)入函數(shù),使用Shift+F5退出調(diào)試器。可以使用F9設(shè)置斷點(diǎn),也可以使用鼠標(biāo)在編輯器窗口的左側(cè)空白處單擊來設(shè)置。 在開始調(diào)試更復(fù)雜的項(xiàng)目(包括Django或Flask應(yīng)用程序)之前,你需要先進(jìn)行設(shè)置,然后選擇調(diào)試配置。設(shè)置調(diào)試配置相對簡單。在Debug 視圖中,選擇Configuration下拉菜單,然后點(diǎn)擊Add Configuration,并選擇Python : Visual Studio Code將在當(dāng)前文件夾下創(chuàng)建一個(gè)名為 .vscode/launch.json的調(diào)試配置文件,它允許你設(shè)置特定的Python配置[48]以及調(diào)試特定應(yīng)用程序[49](如Django和Flask)的設(shè)置。 你甚至可以執(zhí)行遠(yuǎn)程調(diào)試,以及調(diào)試Jinja和Django模板。關(guān)閉編輯器中的launch.json文件,然后從Configuration 下拉菜單中為你的應(yīng)用程序選擇合適的配置。 Git集成 VS Code內(nèi)置了對源代碼控制管理[50]的支持,并附帶了對Git和GitHub的開箱即用支持。你可以在VS Code中安裝對其他SCM的支持,并一起使用它們。可以從Source Control 視圖中訪問源代碼管理: 如果你的項(xiàng)目文件夾包含一個(gè).git文件夾,VS Code會(huì)自動(dòng)打開Git/GitHub[51]的全部功能。以下是一些你可以完成的任務(wù):
所有這些功能都可以直接從VS Code用戶界面中調(diào)用: VS Code還能識(shí)別在編輯器之外所做的更改,并正確處理。 在VS Code中提交你最近的更改是一個(gè)相當(dāng)簡單的過程。在Source Control 視圖中,修改后的文件顯示為M標(biāo)記,而未跟蹤的新文件顯示為U 標(biāo)記。將鼠標(biāo)懸停在文件上,然后單擊加號(hào)(+),就可以看到你的更改。在視圖頂部添加提交消息,然后單擊復(fù)選框提交更改: 你還可以在VS Code中向GitHub推送本地提交。從“Source Control 視圖”菜單中選擇“Sync(同步)”,或者單擊分支指示器旁邊的狀態(tài)欄[57]上的“Synchronize Changes (同步更改)”。 結(jié)論 Visual Studio Code是最酷的通用編輯器之一,也是Python開發(fā)的最佳候選。在本文中,你了解到:
Visual Studio Code已經(jīng)成為我開發(fā)Python和處理其他任務(wù)的默認(rèn)編輯器,我希望你能給它一個(gè)機(jī)會(huì),讓它也成為你的編輯器。 如果你有任何問題或意見,請?jiān)谙旅娴脑u論區(qū)留言。Visual Studio Code網(wǎng)站[58]上還有很多我們這里沒有介紹到的信息。 作者在此感謝微軟Visual Studio Code團(tuán)隊(duì)的Dan Taylor[59]為本文所花費(fèi)的時(shí)間和提供的寶貴信息。 |
|