🚀 在 VS Code 中

编写 Python 扩展

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

Python 扩展为其他扩展提供了 API,以便与用户计算机上可用的 Python 环境一起工作。查看 @vscode/python-extension npm 模块,该模块包含类型和帮助程序实用程序,用于从你的扩展访问这些 API。

Python 扩展模板

Python 扩展模板可帮助你开始构建 Visual Studio Code 扩展,用于你最喜欢的 Python 工具。它可以是 linter、格式化程序或代码分析器,或所有这些的组合。该模板将为你提供构建扩展所需的基本构建块,该扩展将你的工具集成到 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 [email protected] 更新)
  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 注释。你将需要查看 LICENSE 文件,即使你想保留 MIT 许可证。

示例

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

  • Pylint - 在文件 opensaveclose 上实现 linting 和代码操作。
  • Flake8 - 实现 linting 和代码操作。
  • 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 上看起来很棒,以及如何成为经过验证的发布者,以便用户放心地安装你的扩展。