最強開源編輯器,五步教你用 VSCode 進行 Python 開發!

  • 2019 年 10 月 8 日
  • 筆記

微信搜 「GitHubDaily」 點關注

設為 「星標」,每天下午 18:35,帶你逛 GitHub!

轉自量子位,作者輕沉

在程式設計師圈子裡,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 官網上找到:https://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 的一個算式求值庫:

https://github.com/JFincher42/PyEval

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

本地文件夾建好後,你可以通過 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 甚至其他項目開發時最常用的編輯器,推薦給你,希望你也可以試試看~