🚀 在 VS Code 中取得

撰寫 Python 擴充功能

注意:如果您是 VS Code 擴充功能撰寫新手,建議您先閱讀您的第一個擴充功能教學課程,並嘗試建立一個簡單的 Hello World 擴充功能。

Python 擴充功能提供 API,讓其他擴充功能可與使用者電腦上可用的 Python 環境搭配使用。請查看 @vscode/python-extension npm 模組,其中包含類型和協助程式公用程式,可從您的擴充功能存取這些 API。

Python 擴充功能範本

Python 擴充功能範本可協助您開始為您喜愛的 Python 工具建置 Visual Studio Code 擴充功能。它可以是程式碼靜態分析器、格式器或程式碼分析,或所有這些的組合。此範本將提供您建置擴充功能所需的基本建構區塊,以將您的工具整合到 VS Code 中,並且它已經可以存取上述 Python API。

程式語言與框架

擴充功能範本包含兩個部分:擴充功能部分和語言伺服器部分。擴充功能部分是以 TypeScript 撰寫,而語言伺服器部分是以 Python 透過 pygls (Python 語言伺服器) 程式庫撰寫。

當您使用此範本時,您主要會處理程式碼的 Python 部分。您將使用語言伺服器協定將您的工具與擴充功能部分整合。pygls 目前適用於LSP 3.16 版

TypeScript 部分處理與 VS Code 及其 UI 的互動。擴充功能範本隨附一些內建設定,可供您的工具使用。如果您需要新增設定以支援您的工具,則必須使用一些 TypeScript。擴充功能範本提供一些設定範例,您也可以查看我們的團隊為一些熱門工具開發的擴充功能

需求

  1. VS Code 1.64.0 或更高版本
  2. Python 3.7 或更高版本
  3. node >= 14.19.0
  4. npm >= 8.3.0 (npm 隨 node 一起安裝,請檢查 npm 版本,使用 npm install -g npm@8.3.0 來更新)
  5. 適用於 VS Code 的 Python 擴充功能

您應該知道如何建立和使用 Python 虛擬環境。

開始使用

若要開始使用,請依照範本 README 中的指示進行。您將在那裡學習如何使用範本來建立您的存放庫,以及如何安裝必要的工具 (例如,nox 工作執行器) 和選用相依性 (測試支援)。

README 具有最新的指示,並且詳細說明如何自訂擴充功能的 package.json 預留位置 (<pythontool-module><pythontool-display-name> 等)。

範本功能

透過範本建立您的擴充功能後,它將包含下列擴充功能貢獻。假設 <pytool-module> 已替換為 mytool,而 <pytool-display-name> 已替換為 My Tool

  1. 命令 My Tool: Restart Server (命令 ID: mytool.restart)。
  2. 以下設定
    • mytool.logLevel
    • mytool.args
    • mytool.path
    • mytool.importStrategy
    • mytool.interpreter
    • mytool.showNotification
  3. 以下擴充功能啟用的觸發程序
    • 在語言 python 上。
    • 在開啟的工作區中找到具有 .py 擴充功能的檔案時。
    • 在命令 mytool.restart 上。
  4. 記錄的輸出通道 輸出 > My Tool

整合您的工具

產生的 bundled/tool/server.py 檔案是您將進行大部分變更的地方。檔案中的 TODO 註解指出各種自訂點。另請在範本中的其他位置 (例如其他 Python 和 Markdown 檔案) 搜尋 TODO 註解。即使您想要保留 MIT 授權,您也會想要檢閱 LICENSE 檔案。

範例

有幾個從範本建立的範例實作

  • Pylint - 在檔案 opensaveclose 上實作程式碼靜態分析和程式碼動作。
  • Flake8 - 實作程式碼靜態分析和程式碼動作。
  • Black Formatter - 整合 Black 格式器。
  • autopep8 - 整合 autopep8 格式器。
  • isort - 新增程式碼動作以排序匯入。

您也可以檢閱語言伺服器協定規格,以更深入瞭解 pygls 語言伺服器整合。

擴充功能開發

範本 README 詳細說明範本隨附的開發週期支援。範本具有命令和組態,因此您可以建置、執行、偵錯和測試您的擴充功能。

如果您在開發期間遇到問題,則有一個疑難排解章節可協助您解決常見問題。

封裝與發佈

在發佈您的擴充功能之前,您需要更新特定擴充功能的擴充功能 package.json 欄位 (例如 publisherlicense)。您也會想要更新輔助 Markdown 檔案 (CODE_OF_CONDUCT.mdCHANGELOG.md 等)。

一旦您的擴充功能準備好發佈,就會有一個 nox build-package 工作來建立 .vsix 檔案,然後您可以將其上傳到您的擴充功能管理頁面

如果您是建立和發佈 VS Code 擴充功能的新手,我們建議您遵循主要 VS Code 擴充功能撰寫主題中概述的最佳做法。您可以在此處找到指南,以協助您的擴充功能在 Marketplace 上看起來很棒,以及如何成為已驗證的發行者,以便使用者放心地安裝您的擴充功能。