编写 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。扩展模板中有一些设置示例,您还可以查看 我们团队开发的 一些流行工具的扩展。
要求
- VS Code 1.64.0 或更高版本
- Python 3.7 或更高版本
- node >= 14.19.0
- npm >= 8.3.0(
npm
与 node 一起安装,检查 npm 版本,使用npm install -g [email protected]
更新) - Python VS Code 扩展
您应该了解如何创建和使用 Python 虚拟环境。
入门
要开始,请按照模板 自述文件 中的说明进行操作。您将了解如何使用 模板创建您的存储库,以及如何安装必要的工具(例如 nox 任务运行器)和可选依赖项(测试支持)。
自述文件 包含最新说明,还详细介绍了如何自定义扩展的 package.json
占位符(<pythontool-module>
、<pythontool-display-name>
等)。
模板的功能
通过模板创建扩展后,它将包含以下扩展贡献。假设 <pytool-module>
被替换为 mytool
,<pytool-display-name>
被替换为My Tool
- 一个命令My Tool: Restart Server(命令 ID:
mytool.restart
)。 - 以下设置
mytool.logLevel
mytool.args
mytool.path
mytool.importStrategy
mytool.interpreter
mytool.showNotification
- 以下扩展激活触发器
- 在 Language
python
上。 - 在打开的工作区中找到带有
.py
扩展名的文件时。 - 在 Command
mytool.restart
上。
- 在 Language
- 用于记录的输出通道输出 > My Tool。
集成您的工具
生成的 bundled/tool/server.py
文件是您进行大部分更改的地方。文件中的 TODO
注释指出了各种自定义点。此外,在模板中的其他位置(例如其他 Python 和 Markdown 文件)搜索 TODO
注释。您可能需要查看 LICENSE 文件,即使您想保留 MIT 许可证。
示例
从模板创建了几个示例实现
- Pylint - 在文件
open
、save
和close
上实现 linting 和代码操作。 - Flake8 - 实现 linting 和代码操作。
- Black Formatter - 集成了 Black 格式化程序。
- autopep8 - 集成了 autopep8 格式化程序。
- isort - 添加代码操作以排序导入。
您还可以查看 语言服务器协议规范,以更好地了解 pygls
语言服务器集成。
扩展开发
模板自述文件详细介绍了模板中包含的 开发周期支持。该模板包含命令和配置,因此您可以构建、运行、调试和测试您的扩展。
如果您在开发过程中遇到问题,有一个 故障排除 部分,可以帮助解决常见问题。
打包和发布
在发布扩展之前,您需要更新扩展的 package.json
字段(例如 publisher
和 license
),以适应您的特定扩展。您还需要更新辅助 Markdown 文件(CODE_OF_CONDUCT.md
、CHANGELOG.md
等)。
扩展准备发布后,有一个 nox
build-package
任务可以创建 .vsix
文件,然后您可以将其上传到您的扩展 管理页面。
如果您不熟悉创建和发布 VS Code 扩展,建议您遵循主 VS Code 扩展编写 主题中概述的最佳实践。在这里,您会找到一些指导,可以帮助您的扩展在 Marketplace 上看起来很棒,以及如何成为经过验证的发布者,以便用户对安装您的扩展充满信心。