在 Windows 上怎樣做 Python 開發(fā)?是像大神那樣使用純文本編輯器,還是用更加完善的 IDE?到底是用自帶的命令行工具,還是需要裝新的 Terminal?本文將帶你了解如何利用微軟官方維護(hù)的 MS Terminal 與 VS Code,來為 Python 開發(fā)保駕護(hù)航。使用 Windows 系統(tǒng)一大好處是它的應(yīng)用太豐富了,甚至強(qiáng)大的 GPU 也能在閑暇時(shí)間做點(diǎn)其它「工作」。然而與 Linux 或 macOS 不同,在 Windows 上做開發(fā)總會(huì)遇到很多挑戰(zhàn),不論是文件編碼、環(huán)境控制還是項(xiàng)目編譯,開發(fā)過程中總會(huì)有一些神奇的收獲。這些對(duì)于初學(xué)者來說尤其突出:我們?cè)诎惭b某個(gè)庫時(shí)可能出現(xiàn)各種依賴項(xiàng)錯(cuò)誤,我們?cè)谧x寫文本時(shí)出現(xiàn)各種編碼錯(cuò)誤等等。那么在 Windows 上如何做 Python 開發(fā)呢?相信大神們都會(huì)有自己的解決方案,但本文希望介紹微軟官方發(fā)布的 Terminal 和 Visual Studio Code,希望它們能構(gòu)建更流暢的 Windows 開發(fā)體驗(yàn)。Visual Studio Code 是程序員可以使用的最酷的代碼編輯器之一,是一個(gè)可在所有平臺(tái)上使用的開源、可擴(kuò)展和輕量級(jí)編輯器。正是這些品質(zhì)使微軟的 VS Code 大受歡迎,并成為 Python 開發(fā)的絕佳平臺(tái)。可能很多讀者都比較熟悉 PyCharm 與 Jupyter Notebook 等常見的 Python IDE,但 VS Code 一樣不會(huì)令你失望。在本文中,你將學(xué)習(xí)到微軟 Terminal 和 Visual Studio Code 的特性,包括:
什么是微軟 Terminal
微軟 Terminal 效果怎么樣
安裝 Visual Studio Code
發(fā)現(xiàn)并安裝?Python 擴(kuò)展
編寫簡(jiǎn)單的 Python 應(yīng)用程序
了解如何在 VS Code 中運(yùn)行和調(diào)試現(xiàn)有 Python 程序
將 VS Code 連接到 Git 和 GitHub,與全世界分享你的代碼
我們假設(shè)你了解 Python 開發(fā),并且已經(jīng)在系統(tǒng)上安裝了某種版本的 Python(如 Python 2.7、Python 3.6/3.7、Anaconda 或其他)。由于 VS Code 可兼容所有主流平臺(tái),因此你可能會(huì)看到略有不同的 UI 元素,并且可能需要修改某些命令。新興的微軟 TerminalWindows Terminal 是一個(gè)開源終端應(yīng)用程序,由微軟在今年 5 月份的 Build 開發(fā)者大會(huì)上推出。MS Terminal 支持 Command Prompt 和 PowerShell 的所有優(yōu)點(diǎn),基本上命令行已經(jīng)可以和 Linux 相融合了,除此之外運(yùn)行命令提示符也是沒問題的。在 MS Terminal 開源后,GitHub 的 Star 量增長(zhǎng)得非常快,目前已經(jīng)超過了 5 萬。這足以說明這個(gè)項(xiàng)目非常受關(guān)注,在社區(qū)的開源改進(jìn)下,這個(gè)工具一定挺好用。
MS Terminal 開源地址:https://github.com/microsoft/terminal
當(dāng)然,目前 MS Terminal 已經(jīng)可以直接下載安裝程序了,社區(qū)的體驗(yàn)也非常不錯(cuò)。因此如果我們?cè)?Windows 上做 Python 開發(fā),命令行工具就可以采用 MS Terminal,它能解決很大一部分的包安裝、環(huán)境控制等問題。MS Terminal 的效果怎么樣MS Terminal 最核心的功能就是支持多條選項(xiàng)卡,且每一個(gè)選項(xiàng)卡都可以連接到命令行 shell 或應(yīng)用,例如 Command Prompt 或通過 SSH 訪問樹莓派等。下圖展示了這種多選項(xiàng)卡的支持情況:此外,除了功能外,更重要的就是顏值,就像我們常用 zsh 來提供更美觀的命令行一樣。雖然 zsh 目前的 GitHub 收藏量已經(jīng)達(dá)到 9.4 萬了,但 ReadMe 文檔清楚地寫著它最好用于 macOS 或 Linux。而新發(fā)布的 MS Terminal 不論在界面還是在文字風(fēng)格,都以前都強(qiáng)了很多。背景透明度、文字高亮都可以自行定義,還能定義 emoji 等符號(hào)。如下為基本的展示,我們可以根據(jù)自己的需要調(diào)整整個(gè)界面。整個(gè)項(xiàng)目還在積極開發(fā)中,很多功能也都在完善與增加。不過既然是微軟官方維護(hù)的開源項(xiàng)目,那么我們還是非常有信心的,至少在命令行部分可以降低開發(fā)過程中的各種報(bào)錯(cuò)。當(dāng)然如果讀者在 Windows 上有更好的命令行工具推薦,也可以在文末留言。安裝和配置 VS Code前面介紹了開發(fā)中必不可缺的命令行工具,下面我們?cè)摿囊涣?VS Code 了,它是支持 Python 開發(fā)的核心工具。下面我們從最初的安裝、環(huán)境管理到編寫、測(cè)試、發(fā)布代碼,介紹我們?cè)撊绾蝺?yōu)雅地使用 VS Code。在任何平臺(tái)上都可以安裝 Visual Studio Code。官網(wǎng)提供了 Windows、Mac 和 Linux 的完整安裝說明,并且會(huì)每月更新編輯器,其中包含新功能和錯(cuò)誤修正。你可以在 Visual Studio Code 網(wǎng)站上找到所有安裝內(nèi)容:此外,除名稱相近外,Visual Studio Code(簡(jiǎn)稱 VS Code)與基于 Windows 的更大規(guī)模的 Visual Studio 幾乎沒有其他相同的地方。Visual Studio Code 本身支持多種語言,并且它的一個(gè)擴(kuò)展模型具有支持其他組件的豐富生態(tài)系統(tǒng)。VS Code 每月更新,你可以在微軟 Python 博客中了解更新信息。任何用戶都可以克隆微軟的 VS Code Github 倉庫并貢獻(xiàn)自己的代碼。VS Code UI 已有詳細(xì)記錄,這里不予贅述:Python 擴(kuò)展如上所述,VS Code 通過詳細(xì)記錄的擴(kuò)展模型支持多種編程語言的開發(fā)。Python 擴(kuò)展使用戶可以在 Visual Studio Code 中進(jìn)行 Python 開發(fā),具有以下特征:
在 Python 項(xiàng)目(而不是單個(gè) Python 文件)上使用 Visual Studio Code 開辟了更多功能,使得 VS Code 能夠真正發(fā)揮作用。讓我們來看看它在更大的項(xiàng)目中如何運(yùn)作。假如我們編寫了一個(gè)計(jì)算器程序,該程序通過艾茲格·迪科斯徹(Edsger Dijkstra)調(diào)度場(chǎng)算法的一種變體來解析中綴符號(hào)(infix notation)編寫的方程式。為了說明 Visual Studio Code 以項(xiàng)目為中心的特征,我們現(xiàn)在開始在 Python 中重新創(chuàng)建調(diào)度場(chǎng)算法作為方程式評(píng)估庫。相應(yīng) GitHub 地址:https://github.com/JFincher42/PyEval。本地文件夾創(chuàng)建后,你可以快速打開 VS Code 中的整個(gè)文件夾。由于我們已經(jīng)創(chuàng)建了文件夾和基本文件,所以首選方法(如上所述)做出如下修正:cd /path/to/projectcode .當(dāng)你這種方式打開時(shí),VS Code 了解并將使用它看到的任何 virtualenv、pipenv 或 conda 環(huán)境。你甚至不需要首先啟動(dòng)虛擬環(huán)境。通過菜單中的 File, Open Folder、鍵盤上的 Ctrl+K, Ctrl+O 或者命令面板中的 File, Open Folder 等方式,你可以打開用戶界面(UI)上的文件夾。以下是創(chuàng)建的方程式 eval 庫項(xiàng)目:當(dāng) Visual Studio Code 打開文件夾時(shí),它還會(huì)再次打開上次打開的文件(這是可配置的)。你可以打開、編輯、運(yùn)行和調(diào)試列出的任何文件。左側(cè)活動(dòng)欄中的資源管理器視圖(Explorer view)提供文件夾中所有文件的視圖,并顯示當(dāng)前選項(xiàng)卡集中有多少未保存文件。代碼測(cè)試的支持VS Code 可以自動(dòng)識(shí)別在 unittest、pytest 或 Nose 框架中編寫的現(xiàn)有 Python 測(cè)試,但前提是在當(dāng)前環(huán)境中安裝了這些框架。作者在 unittest 框架中編寫了一個(gè)用于方程式 eval 庫的單元測(cè)試,你可以在這個(gè)例子中使用它。若要運(yùn)行項(xiàng)目中任何 Python 文件的現(xiàn)有單元測(cè)試,請(qǐng)單擊右鍵并選擇 Run Current Unit Test File。系統(tǒng)將提示指定測(cè)試框架,在項(xiàng)目中搜索測(cè)試的位置以及測(cè)試使用的文件名模式。所有這些都保存為本地.vscode/settings.json 文件中的工作區(qū)設(shè)置,并可以進(jìn)行修改。對(duì)于這個(gè)等式項(xiàng)目,你可以選擇 unittest、當(dāng)前文件夾和模式 *_test.py。測(cè)試框架設(shè)置完成并顯示測(cè)試后,你可以單擊狀態(tài)欄(Status Bar)上的 Run Tests 并從命令面板中選擇一個(gè) option 來運(yùn)行所有測(cè)試:通過在 VS Code 中打開測(cè)試文件,單擊狀態(tài)欄上的 Run Tests,然后選擇 Run Unit Test Method 以及其他要運(yùn)行的特定測(cè)試,你還可以運(yùn)行單個(gè)測(cè)試。這使得解決單個(gè)測(cè)試失敗并重新運(yùn)行失敗的測(cè)試變得很簡(jiǎn)單,從而能夠節(jié)省大量時(shí)間。測(cè)試結(jié)果顯示在 Python Test Log 下的 Output 窗格中。調(diào)試支持即使 VS Code 是代碼編輯器,直接在 VS Code 中調(diào)試 Python 也是可以的。VS Code 提供的諸多功能可以媲美好的代碼調(diào)試器,包括:
check-out 現(xiàn)有或創(chuàng)建新的分支和標(biāo)簽(branch and tag)
查看并解決合并沖突(merge conflict)
查看差異(view diffs)
所有這些功能都可以直接從 VS Code UI 獲得:VS Code 還可以識(shí)別編輯器外部進(jìn)行的更改并且正確運(yùn)作。在 VS Code 中提交最近的更改相當(dāng)簡(jiǎn)單。修改后的文件顯示在 Source Control 視圖中,并帶有 M 標(biāo)記,而新的未跟蹤文件使用 U 標(biāo)記。將鼠標(biāo)懸停在文件上然后單擊加號(hào)(+)可以暫存更改。在視圖頂部添加提交消息,然后單擊復(fù)選標(biāo)記來提交更改:你也可以在 VS Code 中將本地提交(local commits)推送到 GitHub。從 Source Control 視圖菜單中選擇 Sync,或者單擊分支指示器(branch indicator)旁邊狀態(tài)欄上的 Synchronize Changes。所以在作者看來,Visual Studio Code 是最酷的通用編輯器之一,也是 Python 開發(fā)的最佳候選工具。希望你也可以在 Python 開發(fā)中嘗試使用 Visual Studio Code 編輯器,相信不會(huì)令你失望的。