硬核教程:五步掌握用VSCode進行高效Python開發

 2019-09-23 20:00:11.0

在程序員圈子裏,Visual Studio Code(以下簡稱VSCode)可以說是目前最火的代碼編輯器之一了。

它是微軟出品的一款可擴展的輕量級開源編輯器,並且支持全平臺系統。這些特性使得VSCode頗受歡迎,這也使其成爲了一個很棒的Python開發平臺。

在本文中,你將學到如何在VSCode中進行高效的Python開發,其中包括:

  • 安裝VSCode
  • 安裝插件讓Python開發更便利
  • 編寫一個簡單的Python應用
  • 學習如何在VSCode中運行和調試已有的Python程序
  • 在VSCode中使用Git和Github來管理代碼

本文假設你已經熟悉了基本的Python開發,並且計算機上安裝了某個版本的Python(Python2.7、Python3.6/7、Anaconda等)。

文中會提供Ubuntu和Windows系統上的運行截圖和樣例,但由於VSCode還可以在其他主流平臺上運行,所以你可能會在實際操作中看到略微有些差異的UI界面,一些命令的鍵位可能也需要修改。

VSCode的安裝與配置

在任何平臺上安裝VSCode都不是難事。微軟提供了Windows,Mac和Linux平臺上詳盡的安裝指引,並且每月都會有更新以推出新特性或修復已知問題。

這些都可以在VSCode官網上找到:
code.visualstudio.com

可能你會想,VSCode和那個龐大的Visual Studio名字這麼像,它們會不會有什麼關係呢?但其實,並沒有,哈哈。

VSCode默認支持多種編程語言,並且有着豐富的擴展。VSCode每月更新,你可以在微軟博客上隨時關注更新的進展。微軟甚至把代碼開源在了Github上供所有開發者克隆倉庫甚至貢獻代碼(暗示大家趕緊來提PR)。

VSCode的用戶界面官方給出了詳細的操作說明,如下圖所示,在此不再贅述。



爲Python開發安裝插件

正如上文中提到,VSCode可以通過自身良好的擴展性質來支持各種編程語言的開發。

Python插件使我們可以更方便地在VSCode中進行Python開發,它有以下功能和特點:

  • 支持Python2.7和Python3.4+的Pyhon版本
  • 使用IntelliSense進行代碼補全
  • 代碼檢查器
  • 對調試的支持
  • 代碼段功能
  • 對單元測試的支持
  • 自動應用虛擬環境
  • 可在Jupyter環境和Jupyter Notebook中編輯代碼



事實上,VSCode插件並不僅是編程語言層面的,如下面這些:Keymaps可以改變VSCode的操作方式,讓那些習慣使用Atom,Sublime Text,Emacs,Vim,Pycharm等其他編輯器的開發者更舒服。

Themes可以定製用戶界面外觀,不管你是喜歡亮色、暗色或五彩斑斕的黑,它都能滿足;Language提供了良好的本地化體驗。

還有一些很有用的插件推薦給大家:

  • GitLens提供了許多可以直接在編輯窗口中使用的Git特性,包括blame標註和倉庫探索等;
  • Autosave可以通過菜單欄File—Auto Save開啓,顧名思義,它會以固定的時間間隔保存你的代碼,默認是1000毫秒(1秒),這個值是可以配置的;
  • Settings Sync可以讓你通過Github在多個VSCode安裝中同步配置,如果你會在不同的機器上使用VSCode,這麼做可以讓你保持開發環境的一致性;
  • Docker插件可以當讓你愉快地使用Docker工作,它幫助開發者編寫dockerfile和docker-compose.yml,打包並部署項目,甚至爲項目自動生成dockerfile。

當然了,你也可以自己發掘其他有趣有用的插件,歡迎和大家分享你的發現!

可以通過點擊左邊活動欄的插件圖標來進行插件或主題的發現和安裝。你可以通過關鍵詞來搜索插件,用多種方式排序搜索結果,並快捷方便地安裝插件。

對於本文中使用到的Python插件,你可以搜索Python字樣,然後在特定項上點擊install進行安裝。



同理,你可以用這種方式安裝其他上面提到的插件。

VSCode配置文件

VSCode通過用戶(user)工作區(workspace)設置實現高度可配置化。

用戶設置是應用於所有VSCode實例的全局性設置,而工作區設置是應用於特定文件夾或項目的局部設置。工作區設置給VSCode提供了極大的靈活性,我們在之後調出的都是工作區設置。

工作區設置以json格式保存在項目目錄下.vscode文件夾中。

寫個Python程序

讓我們從一個Python程序開始探索如何在VSCode中進行Python開發。你可以在VSCode中使用快捷鍵Ctrl+N來編輯一個新文件(也可以在菜單欄中選擇File—New File)。

Tips:VSCode用戶界面提供了命令盤(command palette)功能,使你可以手不離鍵盤就能搜索、執行各項命令。按下Ctrl+Shift+P打開命令盤,鍵入new file,按下回車,也可以編輯一個新文件。

無論用哪種方法,你應該可以看到類似下面這樣的窗口:



新文件打開後,就可以開始寫代碼啦。

我們快速寫一個埃拉託斯特尼篩法(用來尋找不超過一個數的所有質數)作爲測試代碼。從下面這兩行開始:

sieve = [True] * 101
for i in range(2, 100):

你應該看到類似下面的場景:



等等,發生什麼了?爲什麼VSCode沒有任何關鍵詞高亮,格式自動調整等有用的東西?要它何用?

答案是,目前VSCode還不知道你在寫什麼。這個文字緩衝區叫做Untitled-1,如果你看看窗口右下角,你會發現寫着Plain Text,也就是說VSCode還不知道你在寫Python代碼。

爲了讓Python插件發揮作用,我們需要將文件存儲爲後綴爲py的文件,如sieve.py。你可以通過菜單欄File—Save File,或者按下Ctrl+S,或在命令盤鍵入save file來做到這一點。VSCode看到py後綴就會將文件解釋爲Python代碼。現在你的窗口應該長這樣:



好多了有沒有!VSCode自動按照Python語言重新確定了格式,你可以在窗口左下角驗證當前編程語言的正確性。

如果你同時安裝了多個版本的Python(如Python2.7,Python3.x和Anaconda),你可以通過點擊左下角的語言(這裏的Python x.x.x)或在命令盤中選擇select interpreter來切換Python解釋器。VSCode默認用PEP8標準來格式化Python代碼,但你也可以選用其他標準。

現在讓我們完成剩餘篩法代碼。

爲了能觀察到IntelliSense發揮作用,請不要直接複製粘貼這段代碼。親手輸入,你將看到下面的畫面:



下面是埃拉託斯特尼篩法中「篩」這個部分的完整代碼:

sieve = [True] * 101
for i in range(2, 100):
    if sieve[i]:
        print(i)
        for j in range(i*i, 100, i):
            sieve[j] = False

輸入這段代碼時,VSCode自動縮進了for和if下的語句,自動加上了結尾大括號,併爲你提供輸入建議。這就是IntelliSense的威力。

運行Python代碼

既然寫完了代碼,我們就可以運行它了。因爲VSCode可以直接在編輯器裏運行代碼,所以我們完全不需要離開編輯器。按Ctrl+S保存文件,接着在編輯器窗口中點擊鼠標右鍵,選擇Run Python File in Terminal。



可以看見,窗口下方出現了Terminal選項卡,顯示了代碼的輸出。

對Python代碼檢查器的支持

你可能在寫代碼的時候看見過一個彈出框,上面寫着代碼檢查器不可用(linting was not available)。你可以在彈出框中快速安裝一個代碼檢查器,默認安裝的是PyLint。VSCode也支持其他檢查器,包括:flake8、mypy、pydocstyle、pep8、prospector、pyllama、bandit等。

Python代碼檢查器頁面有配置每一種檢查器的詳細資料。注意,代碼檢查器的選擇是項目級別的工作區設置,而不是全局用戶設置。

編輯一個已有的Python項目

在埃拉託斯特尼篩法的例子中,你創建了一個單獨的Python文件。這作爲例子來講很合適,但通常你會創建更大的項目,並在其上工作一段時間。一個典型的創建新項目的工作流程如下:

  • 創建一個存放項目的文件夾(其中可能包含一個新的Github項目)
  • 切換到新文件夾
  • 用命令代碼創建一個初始Python代碼文件

在Python項目中使用VSCode會給你帶來更多精彩的功能,讓我們看看VSCode是怎樣對付大型工程的。

早在上個世紀我還是一名年輕的程序員時,我用調度場算法寫過一個將算式解析爲中綴表達式的計算器程序。爲了展示VSCode中項目專屬的特性,我將算法重構成了Python的一個算式求值庫:

JFincher42/PyEval github.com圖標

大家可以隨意克隆至本地以進行後面的操作。

本地文件夾建好後,你可以通過VSCode快捷地打開整個文件夾,我比較喜歡下面這種方式:

cd /path/to/project
code .

當這樣打開時,VSCode將檢測到並開啓任何項目中存在的virtualenv、pipenv或conda虛擬環境,你甚至都不用自己手動去啓動虛擬環境!以下幾種方式都可以在用戶界面中打開一個文件夾:菜單欄中點擊File—Open Folder;按下快捷鍵Ctrl+K或Ctrl+O;在命令盤中鍵入file:open folder。

我的公式求值庫項目打開後看起來是這樣的:



當VSCode打開文件夾時,它同時也會打開你最近打開的文件(這個行爲是可配置的)。

你可以打開、編輯、運行、調試文件列表中的任何文件。

左側活動區的探索者視圖向你展示了文件夾中的所有文件,並告訴你在當前打開的選項卡中有多少編輯了但還沒有保存的文件。

對測試的支持

如果當前環境安裝了測試框架,VSCode可以自動識別已有的用測試框架編寫的測試代碼。我用unittest爲我的公式求值庫寫了一個單元測試,大家可以用它作爲例子來學習。

你可以在項目中的任何一個文件中右鍵選擇Run Current Unit Test File來運行已有的單元測試。VSCode會詢問你使用哪種測試框架、項目中測試代碼存放的路徑,以及測試文件的命名方式。

這些設置都將作爲工作去設置被保存在項目.vscode文件夾下的settings.json文件中,你也可以在那裏更改這些設置。對於我的公式求值項目,我們選擇用unittest框架,測試代碼在當前目錄下,測試代碼命名爲*_test.py。

一旦配置好了測試框架、找到了測試代碼,你就可以點擊狀態欄的Run Tests來運行所有的測試。



你甚至可以通過點擊狀態欄的Run Tests,然後選擇Run Unit Test Method來運行單個測試。這樣我們就可以單獨運行失敗的測例,能夠節省一大筆時間!測試結果輸出在Output選項卡中。

對調試的支持

即使VSCode是個編輯器,但在其中調試代碼也是可行的。VSCode提供了許多好的代碼調試器所擁有的特性:

  • 自動變量追蹤
  • watch表達式
  • 斷點
  • 調用棧檢查

它們作爲調試視圖的一部分被顯示在活動欄中:



調試器可以控制Python應用在內置終端或遠程終端實例上運行。它可以連接一個正在運行的Python實例,甚至可以調試Django和Flask應用。

用VSCode調試單個Python文件就和按F5啓動調試器一樣簡單。你可以按F10和F11來跳出或進入函數,按Shift+F5退出調試器。按F9或單擊編輯框左側區域來設置斷點。

當你要開始調試像Django和Flask應用這種更復雜的項目時,需要進行調試配置。在調試視圖中,選擇配置下拉菜單中的添加配置,然後選擇Python:



上面的配置存儲在了.vscode/launch.json中,你可以針對像Django、Flask這種特殊應用的設立專門的配置。

你甚至可以遠程調試,或是調試Jinja模板。這一切只需在配置下拉菜單中選擇合適的配置項即可。

Git集成

VSCode內置版本控制機制,並自帶對Git和Github的支持,你也可以安裝插件以支持其他版本控制軟件。版本控制視圖中提供了各種版本控制功能:



如果你的項目目錄包含.git文件夾,那麼VSCode自動開啓完整的Git和Github支持。你可以進行的操作包括:

  • 提交文件到Git
  • 向遠程倉庫推送更新,或從遠程倉庫拉更新
  • 切換已有分支或新建分支
  • 查看並解決合併衝突
  • 查看代碼差別

所有這些事都可以直接在VSCode用戶界面中完成:



VSCode也能識別來自編輯器外的文件內容改變並做出反應。

在VSCode中提交最近的代碼更改是很方便直接的。在版本控制視圖中,被修改的文件用M標記,新的未追蹤文件用U標記。

鼠標懸浮於文件上,點擊加號(+)來添加更改。在頂端輸入提交信息,最後點擊對勾來提交這些更改。



你也可以在VSCode中將本地提交推至Github。選擇版本控制視圖中的Sync,點擊狀態欄中的Synchronize Changes即可。

結論

VSCode是目前最棒的通用編輯器,也是Python開發者的絕佳選擇。通過這篇文章你學到了:

  • 如何安裝VSCode
  • 如何查找、安裝插件來開啓對Python的支持
  • 如何用VSCode更輕鬆地編寫Python程序
  • 如何用VSCode運行、調試Python代碼
  • 如何在VSCode中使用Git和Github

VSCode已經成爲了我進行Python甚至其他項目開發時最常用的編輯器,推薦給你,希望你也可以試試看~

文章來源:量子位