在 Windows 上怎麼做 Python 開發?是像大神一樣使用純文字編輯器,還是用更完善的 IDE?到底是用自備的命令列工具,還是需要裝新的 Terminal?本文將帶你了解如何利用微軟官方維護的 MS Terminal 與 VS Code,來為 Python 開發保駕護航。
使用 Windows 系統一大好處是它的應用太豐富了,甚至強大的 GPU 也能在閒暇時間做點其它「工作」。然而與 Linux 或 macOS 不同,在 Windows 上做開發總是會遇到很多挑戰,不論是文件編碼、環境控制還是專案編譯,開發過程中總會有一些神奇的收穫。
這些對於初學者來說尤其突出:我們在安裝某個函式庫時可能會出現各種依賴項錯誤,我們在讀寫文字時出現各種編碼錯誤等等。
那麼在 Windows 上如何做 Python 開發呢?相信大神們都會有自己的解決方案,但本文希望能介紹微軟官方發表的 Terminal 和 Visual Studio Code,希望它們能建立更流暢的 Windows 開發體驗。
Visual Studio Code 是程式設計師可以使用的最酷的程式碼編輯器之一,是一個可在所有平台上使用的開源、可擴展和輕量級編輯器。正是這些品質使微軟的 VS Code 大受歡迎,並成為 Python 開發的絕佳平台。或許很多讀者都比較熟悉 PyCharm 與 Jupyter Notebook 等常見的 Python IDE,但 VS Code 一樣不會讓你失望。
在本文中,你將學習到微軟Terminal 和Visual Studio Code 的特性,包括:
什麼是微軟Terminal
我們假設你了解Python 開發,並且已經在系統上安裝了某種版本的Python(如Python 2.7、Python 3.6/3.7、Anaconda 或其他)。由於 VS Code 可相容於所有主流平台,因此您可能會看到略有不同的 UI 元素,並且可能需要修改某些命令。
Windows Terminal 是一個開源終端應用程序,由微軟在今年 5 月的 Build 開發者大會上推出。 MS Terminal 支援 Command Prompt 和 PowerShell 的所有優點,基本上命令列已經可以和 Linux 相融合了,除此之外運行命令提示字元也是沒問題的。
在 MS Terminal 開源後,GitHub 的 Star 量成長得非常快,目前已經超過了 5 萬。這足以說明這個計畫非常受關注,在社群的開源改進下,這個工具一定還挺好用。
當然,目前MS Terminal 已經可以直接下載安裝程式了,社群的體驗也非常好。因此如果我們在 Windows 上做 Python 開發,命令列工具就可以採用 MS Terminal,它能解決很大一部分的套件安裝、環境控制等問題。
MS Terminal 最核心的功能就是支援多個選項卡,且每個選項卡都可以連接到命令列shell 或應用,例如Command Prompt 或透過SSH 存取樹莓派等。下圖展示了這種多選項卡的支援情況:
此外,除了功能外,更重要的是顏值,就像我們常用zsh 來提供更美觀的命令列一樣。雖然 zsh 目前的 GitHub 收藏量已經達到 9.4 萬了,但 ReadMe 文件清楚地寫著它最好用於 macOS 或 Linux。而新發布的 MS Terminal 不論在介面還是在文字風格,都以前都強了很多。
背景透明度、文字高亮都可以自行定義,也能定義 emoji 等符號。如下為基本的展示,我們可以依照自己的需求調整整個介面。
整個專案還在積極開發中,許多功能也都在完善與增加。不過既然是微軟官方維護的開源項目,那我們還是非常有信心的,至少在命令列部分可以降低開發過程中的各種報錯。
前面介紹了開發中必不可缺的命令列工具,下面我們該聊一聊 VS Code 了,它是支援 Python 開發的核心工具。下面我們從最初的安裝、環境管理到編寫、測試、發布程式碼,介紹我們該如何優雅地使用 VS Code。
在任何平台上都可以安裝 Visual Studio Code。官網提供了 Windows、Mac 和 Linux 的完整安裝說明,並且會每月更新編輯器,其中包含新功能和錯誤修正。你可以在Visual Studio Code 網站上找到所有安裝內容:
此外,除名稱相近外,Visual Studio Code(簡稱VS Code)與基於Windows 的更大規模的Visual Studio 幾乎沒有其他相同的地方。
Visual Studio Code 本身支援多種語言,而且它的一個擴展模型具有支援其他元件的豐富生態系統。 VS Code 每月更新,你可以在微軟 Python 部落格中了解更新資訊。任何使用者都可以複製微軟的VS Code Github 倉庫並貢獻自己的程式碼
##VS Code UI 已有詳細記錄,這裡不予贅述: Python 擴充功能如上所述,VS Code 透過詳細記錄的擴充模型支援多種程式語言的開發。 Python 擴充功能使用戶可以在Visual Studio Code 中進行Python 開發,具有以下特徵:讓我們以一個新的 Python 程式來探索 Visual Studio Code 中的 Python 開發。在 VS Code 中,鍵入 Ctrl N 開啟新檔案。 (你也可以從選單中選擇「檔案」-「新建」。)
#無論你如何操作,你都應該看到一個類似以下內容的VS Code 視窗:
#開啟新檔案後,即可以輸入程式碼。
輸入Python 代碼
作為測試,我們可以快速編碼埃拉托斯特尼篩法(Sieve of Eratosthenes,它可以找出小於已知數的所有質數)。在剛開啟的新分頁中鍵入以下程式碼:
等等,這是怎麼回事?為什麼 Visual Studio Code 沒有進行任何關鍵字高亮顯示,也沒有進行任何自動格式化或任何真正有用的操作呢?它提供了什麼?
答案是,VS Code 不知道它正在處理的是什麼類型的檔案。緩衝區稱為 Untitled-1,如果你查看視窗的右下角,則可以看到 Plain Text(純文字)。
若要啟動 Python 擴展,請儲存檔案(從選單中選擇 File-Save 或從指令面板中選擇 File-Save File 或只使用 Ctrl S)為 sieve.py。 VS Code 將看到.py 副檔名並正確地將該檔案轉換為 Python 程式碼。
現在你的視窗視圖應該如下所示:
這樣就好多了! VS Code 會自動將檔案重新格式化為 Python 程式碼,你可以透過檢查左下角的語言模式來驗證。
如果你有多個Python 安裝(如Python 2.7、Python 3.x 或Anaconda),則可以透過點擊語言模式指示器或從指令面板中選擇Python: Select Interpreter 來變更VS Code 所要使用的Python 解釋器。預設情況下,VS Code 支援使用 pep8 格式,但你也可以選擇 black 或 yapf。
現在可以加入其餘的 Sieve 程式碼。若要查看IntelliSense,請直接鍵入此程式碼而不要剪下和貼上,您應該會看到以下內容:
#當鍵入程式碼時,VS Code 會對for 和if 語句下面的行進行自動、適當的縮進,加上右括號,並給予內容提示。
運行 Python 程式碼
現在程式碼已經完成,你可以運行它了。沒有必要讓編輯器執行此操作:Visual Studio Code 可以直接在編輯器中執行此程式。儲存檔案(Ctrl S),然後在編輯器視窗中按一下右鍵並選擇在終端機(Terminal)中執行Python 檔案(Run Python File):
你會看到終端窗格顯示在視窗的底部,並顯示程式碼輸出結果。
在 Sieve of Eratosthenes 範例中,你建立了一個 Python 檔。作為一個例子這很不錯,但很多時候,你需要創建更大的項目,並在更長的時間內在它上面進行開發。典型的新專案工作流程可能如下所示:
在Python 專案(而不是單一Python 檔案)上使用Visual Studio Code 開啟了更多功能,使得VS Code 能夠真正發揮作用。讓我們來看看它在更大的項目中如何運作。
假如我們編寫了一個計算器程序,該程序透過艾茲格·迪科斯徹(Edsger Dijkstra)調度場演算法的一種變體來解析中綴符號(infix notation)編寫的方程式。
為了說明 Visual Studio Code 以專案為中心的特徵,我們現在開始在 Python 中重新建立調度場演算法作為方程式評估函式庫。對應 GitHub 網址:https://github.com/JFincher42/PyEval。
本機資料夾建立後,你可以快速開啟 VS Code 中的整個資料夾。由於我們已經創建了資料夾和基本文件,所以首選方法(如上所述)做出如下修正:
當你這個方式開啟時,VS Code 了解並將使用它看到的任何virtualenv、pipenv 或conda 環境。你甚至不需要先啟動虛擬環境。透過選單中的 File, Open Folder、鍵盤上的 Ctrl K, Ctrl O 或指令面板中的 File, Open Folder 等方式,你可以開啟使用者介面(UI)上的資料夾。
以下是建立的方程式eval 庫專案:
#當Visual Studio Code 開啟資料夾時,它也會再次開啟上次開啟的檔案(這是可配置的)。你可以打開、編輯、運行和調試列出的任何文件。左側活動欄中的資源管理器視圖(Explorer view)提供資料夾中所有檔案的視圖,並顯示目前標籤集中有多少未儲存檔案。
VS Code 可以自動識別在 unittest、pytest 或 Nose 框架中編寫的現有 Python 測試,但前提是在當前環境中安裝了這些框架。作者在 unittest 框架中編寫了一個用於方程式 eval 函式庫的單元測試,你可以在這個例子中使用它。
若要執行專案中任何 Python 檔案的現有單元測試,請按一下右鍵並選擇 Run Current Unit Test File。系統將提示指定測試框架,在專案中搜尋測試的位置以及測試使用的檔案名稱模式。
所有這些都保存為本地.vscode/settings.json 檔案中的工作區設置,並且可以進行修改。對於這個等式項目,你可以選擇 unittest、目前資料夾和模式 *_test.py。
測試框架設定完成並顯示測試後,你可以點擊狀態列(Status Bar)上的Run Tests 並從命令面板中選擇一個option 來執行所有測試:
##透過在VS Code 中開啟測試文件,點擊狀態列上的Run Tests,然後選擇Run Unit Test Method 以及其他要執行的特定測試,你也可以執行單一測試。這使得解決單一測試失敗並重新運行失敗的測試變得簡單,從而能夠節省大量時間。測試結果顯示在 Python Test Log 下的 Output 窗格中。 偵錯支援即使 VS Code 是程式碼編輯器,直接在 VS Code 中偵錯 Python 也是可以的。 VS Code 提供的諸多功能可以媲美好的程式碼偵錯器,包括:##偵錯器可以控制在內建終端機或外部終端機實例中執行的Python 應用程式。它可以附加到已經運行的 Python 實例中,甚至可以偵錯 Django 和 Flask 應用程式。
在單一 Python 檔案中偵錯程式碼就像按 F5 啟動偵錯器一樣簡單。你可以按 F10 和 F11 分別跳過和進入函數,並按 Shift F5 退出偵錯器。按 F9 設定斷點,或點選編輯器視窗中的左空白(lift margin)進行設定。
在開始偵錯更複雜的專案(包括 Django 或 Flask 應用程式)之前,你首先需要設定並選擇偵錯配置。設定調試配置相對簡單。從Debug 視圖中選擇Configuration 下拉清單(drop-down),然後選擇Add Configuration 和Python:
Visual Studio Code 將在目前名為.vscode/launch.json的資料夾下會建立一個調試配置文件,它允許使用者設定特定的Python 配置以及調試Django 和Flask 等特定應用程式的設定。
你也可以執行遠端偵錯,並除錯 Jinja 和 Django 模板。關閉編輯器中的 launch.json 文件,然後從 Configuration 下拉清單中為應用程式選擇正確的配置。
Git 整合
如果你的專案資料夾包含.git 資料夾,VS Code 會自動開啟所有 Git / GitHub 功能。你可以執行以下諸多任務:
#所有這些功能都可以直接從VS Code UI 獲得:
VS Code 還可以識別編輯器外部進行的更改並且正確運作。
在 VS Code 中提交最近的變更相當簡單。修改後的檔案顯示在 Source Control 視圖中,並帶有 M 標記,而新的未追蹤檔案使用 U 標記。將滑鼠懸停在文件上然後點擊加號( )可以暫存更改。在視圖頂部新增提交訊息,然後點擊複選標記提交更改:
你也可以在 VS Code 中將本地提交(local commits)推送到 GitHub。從 Source Control 視圖功能表中選擇 Sync,或按一下分支指示器(branch indicator)旁邊狀態列上的 Synchronize Changes。
所以在作者看來,Visual Studio Code 是最酷的通用編輯器之一,也是 Python 開發的最佳候選工具。希望你也可以在 Python 開發中嘗試使用 Visual Studio Code 編輯器,相信不會令你失望的。
以上是Windows上寫Python程式碼的王炸組合!的詳細內容。更多資訊請關注PHP中文網其他相關文章!