🚀 在 VS Code 中

Python 扩展创作

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

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

Python 扩展模板

Python 扩展模板可帮助你开始构建 Visual Studio Code 扩展,用于你最喜欢的 Python 工具。 它可以是代码检查器、格式化程序或代码分析器,或者所有这些的组合。 该模板将为你提供构建扩展所需的基本构建块,该扩展将你的工具集成到 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 注释指出了各种自定义点。 还要在模板中的其他位置搜索 TODO 注释,例如其他 Python 和 Markdown 文件。 你将需要查看 LICENSE 文件,即使你想保留 MIT 许可证。

示例

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

  • Pylint - 在文件 opensaveclose 上实现代码检查和 Code Action。
  • Flake8 - 实现代码检查和 Code Action。
  • Black Formatter - 集成 Black 格式化程序。
  • autopep8 - 集成 autopep8 格式化程序。
  • isort - 添加 Code Action 以对导入进行排序。

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

扩展开发

模板 README 详细介绍了模板附带的开发周期支持。 该模板具有命令和配置,因此你可以构建、运行、调试和测试你的扩展。

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

打包和发布

在发布扩展之前,你需要更新扩展的 package.json 字段(例如 publisherlicense),以用于你的特定扩展。 你还需要更新辅助 Markdown 文件(CODE_OF_CONDUCT.mdCHANGELOG.md 等)。

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

如果你是创建和发布 VS Code 扩展的新手,我们建议你遵循主要的 VS Code 扩展创作主题中概述的最佳实践。 在这里,你将找到指导,以帮助你的扩展在 Marketplace 上看起来很棒,以及如何成为经过验证的发布者,以便用户放心地安装你的扩展。