编写 Python 扩展

注意:如果您是 VS Code 扩展创作的新手,您可能需要先阅读您的第一个扩展教程,然后尝试创建一个简单的 Hello World 扩展。

Python扩展为其他扩展提供 API,以便与用户计算机上可用的 Python 环境配合使用。查看@vscode/python-extension npm 模块,其中包含类型和帮助实用程序,可从您的扩展访问这些 API。

Python 扩展模板

Python 扩展模板可帮助你开始为你喜欢的 Python 工具构建 Visual Studio Code 扩展。它可以是 linter、格式化程序或代码分析,或所有这些。该模板将为您提供构建将工具集成到 VS Code 的扩展所需的基本构建块,并且它已经可以访问上述 Python API。

编程语言和框架

扩展模板有两部分,扩展部分和语言服务器部分。扩展部分是用 TypeScript 编写的,语言服务器部分是通过pygls(Python 语言服务器)库用 Python 编写的。

使用此模板时,您将主要处理代码的 Python 部分。您将使用语言服务器协议将您的工具与扩展部分集成。pygls目前适用于LSP 3.16 版本

TypeScript 部分处理 VS Code 及其 UI 的使用。扩展模板附带了一些可供您的工具使用的内置设置。如果您需要添加新设置来支持您的工具,则必须使用一些 TypeScript。扩展模板包含一些设置的示例,您还可以查看我们团队为一些流行工具开发的扩展。

要求

  1. VS 代码 1.64.0 或更高版本
  2. Python 3.7 或更高版本
  3. 节点 >= 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任务运行程序)和可选依赖项(测试支持)。

自述文件包含最新的说明,还详细介绍了如何自定义扩展的package.json占位符(<pythontool-module><pythontool-display-name>等)。

模板的特点

通过模板创建扩展后,它将包含以下扩展贡献。假设<pytool-module>被替换为mytool,<pytool-display-name>My Tool:

  1. 命令我的工具:重新启动服务器(命令 ID:mytool.restart)。
  2. 以下设置:
    • mytool.logLevel
    • mytool.args
    • mytool.path
    • mytool.importStrategy
    • mytool.interpreter
    • mytool.showNotification
  3. 扩展激活的以下触发器:
    • 论语言python
    • 在打开的工作区中找到具有扩展名的文件.py
    • 遵命mytool.restart
  4. 用于记录输出>我的工具的输出通道。

集成您的工具

您将在生成的bundled/tool/server.py文件中进行大部分更改。TODO文件中的注释指出了各个定制点。还可以搜索TODO模板中其他位置的注释,例如其他 Python 和 Markdown 文件。即使您想保留 MIT 许可证,您也需要查看 LICENSE 文件。

例子

有几个从模板创建的示例实现:

您还可以查看语言服务器协议规范以更好地了解pygls语言服务器集成。

扩展开发

模板自述文件详细介绍了模板中包含的开发周期支持。该模板包含命令和配置,以便您可以构建、运行、调试和测试您的扩展。

如果您在开发过程中遇到问题,可以通过“故障排除”部分来帮助解决常见问题。

包装出版

在发布扩展程序之前,您需要更新特定扩展程序的扩展程序package.json字段(例如publisher和)。license您还想更新辅助 Markdown 文件(CODE_OF_CONDUCT.mdCHANGELOG.md等)。

一旦您的扩展程序准备好发布,就会有一个nox build-package任务来创建一个.vsix文件,然后您可以将其上传到您的扩展程序管理页面

如果您不熟悉创建和发布 VS Code 扩展,我们建议您遵循主要 VS Code扩展创作主题中概述的最佳实践。在这里,您将找到指导,帮助您的扩展程序在 Marketplace 上看起来很棒,以及如何成为经过验证的发布者,以便用户对安装您的扩展程序充满信心。