Authoring Python Extensions
注意:如果您是 VS Code 擴充套件開發新手,建議您先閱讀 Your First Extension 教程,並嘗試建立一個簡單的 Hello World 擴充套件。
Python 擴充套件提供了 API,供其他擴充套件使用使用者計算機上的 Python 環境。請檢視 @vscode/python-extension npm 模組,其中包含型別和輔助工具,以便從您的擴充套件中訪問這些 API。
Python 擴充套件模板
Python 擴充套件模板可幫助您開始為自己喜歡的 Python 工具構建 Visual Studio Code 擴充套件。它可以是 linter、formatter、程式碼分析器,或者所有這些功能的組合。該模板將為您提供將工具整合到 VS Code 所需的基本構建塊,並且它已經可以訪問上述 Python API。
Programming languages and frameworks
擴充套件模板包含兩個部分:擴充套件部分和語言伺服器部分。擴充套件部分用 TypeScript 編寫,而語言伺服器部分則基於 pygls (Python language server) 庫用 Python 編寫。
使用此模板時,您主要會處理程式碼的 Python 部分。您將使用 Language Server Protocol 將您的工具與擴充套件部分整合。pygls 目前支援 LSP 3.16 版本。
TypeScript 部分負責與 VS Code 及其 UI 進行互動。擴充套件模板內建了一些可以由您的工具使用的設定。如果您需要新增新設定來支援您的工具,您將需要編寫一些 TypeScript 程式碼。擴充套件模板包含一些設定的示例,您也可以檢視我們團隊為一些流行工具開發的 擴充套件。
要求
- VS Code 1.64.0 或更高版本
- Python 3.7 或更高版本
- node >= 14.19.0
- npm >= 8.3.0 (
npm隨 node 一起安裝,請檢查 npm 版本,使用npm install -g npm@8.3.0進行更新) - VS Code 的 Python 擴充套件
您應該知道如何建立和使用 Python 虛擬環境。
入門
要開始,請按照模板 README 中的說明進行操作。在那裡,您將瞭解如何使用 模板建立您的儲存庫,以及如何安裝必要的工具(例如,nox 任務執行器)和可選依賴項(測試支援)。
該 README 包含最新的說明,並詳細介紹瞭如何自定義擴充套件的 package.json 佔位符(<pythontool-module>、<pythontool-display-name> 等)。
模板功能
透過模板建立擴充套件後,它將包含以下擴充套件貢獻。假設 <pytool-module> 已替換為 mytool,<pytool-display-name> 已替換為 My Tool。
- 一個命令 My Tool: Restart Server (命令 ID:
mytool.restart)。 - 以下設定
mytool.logLevelmytool.argsmytool.pathmytool.importStrategymytool.interpretermytool.showNotification
- 以下觸發擴充套件啟用的條件
- 當語言為
python時。 - 當在開啟的工作區中找到帶有
.py副檔名的檔案時。 - 當命令
mytool.restart被執行時。
- 當語言為
- 用於記錄的輸出頻道 Output > My Tool。
整合您的工具
生成的 bundled/tool/server.py 檔案是您將進行大部分更改的地方。檔案中的 TODO 註釋指向各種自定義點。還可以搜尋模板中的其他位置(例如其他 Python 和 Markdown 檔案)的 TODO 註釋。您應該檢視 LICENSE 檔案,即使您想保留 MIT 許可證。
示例
已經建立了幾個使用該模板的示例實現
- Pylint - 在檔案
open、save和close時實現 linting 和 Code Actions。 - Flake8 - 實現 linting 和 Code Actions。
- Black Formatter - 集成了 Black 格式化程式。
- autopep8 - 集成了 autopep8 格式化程式。
- isort - 添加了用於排序匯入的 Code Actions。
您還可以檢視 Language Server Protocol 規範,以更好地理解 pygls 語言伺服器整合。
Extension development
模板 README 詳細介紹了模板包含的 開發週期支援。模板提供了命令和配置,以便您可以構建、執行、除錯和測試您的擴充套件。
如果在開發過程中遇到問題,有一個 Troubleshooting 部分可以幫助解決常見問題。
Packaging and publishing
在釋出您的擴充套件之前,您需要更新擴充套件的 package.json 欄位(例如 publisher 和 license)以適應您的特定擴充套件。您還應該更新輔助 Markdown 檔案(CODE_OF_CONDUCT.md、CHANGELOG.md 等)。
當您的擴充套件準備好釋出時,有一個 nox build-package 任務可以建立一個 .vsix 檔案,然後您可以將其上傳到您的擴充套件 管理頁面。
如果您是 VS Code 擴充套件建立和釋出的新手,我們建議您遵循 VS Code 主 擴充套件開發 主題中概述的最佳實踐。在這裡,您將找到有關如何讓您的擴充套件在 Marketplace 上看起來很棒的指南,以及如何成為經過驗證的釋出者,以便使用者可以放心地安裝您的擴充套件。