编写 Python 扩展
注意:如果你是VS Code扩展作者的新手,你可能想先阅读你的第一个扩展教程,并尝试创建一个简单的Hello World扩展。
Python 扩展提供了用于与其他扩展在用户机器上与可用的 Python 环境一起工作的 API。查看 @vscode/python-extension npm 模块,该模块包括类型和从您的扩展访问这些 API 的实用工具。
Python 扩展模板
编程语言和框架
扩展模板分为两部分,扩展部分和语言服务器部分。扩展部分用TypeScript编写,语言服务器部分用Python编写。pygls(Python 语言服务器) 库。
使用此模板时,您大部分的工作将是在Python代码上。您将使用语言服务器协议将您的工具与扩展部分集成。pygls 目前在 LSP的3.16版本上工作。
TypeScript 部分处理与 VS Code 和其用户界面的交互。扩展模板包含一些内置的设置,这些设置可以被你的工具使用。如果你需要添加新的设置来支持你的工具,你将需要使用一点 TypeScript。扩展模板为一些设置提供了示例,你还可以查看我们团队为一些流行工具开发的扩展。
要求
- VS Code 1.64.0 或更高版本
- Python 3.7 或更高版本
- 节点 >= 14.19.0
- npm >= 8.3.0
npm安装了 node,检查 npm 版本,使用npm install -g npm@8.3.0更新) - Python VS Code 扩展
你应该知道如何创建和使用Python虚拟环境。
入门指南
要开始,请按照模板中的说明进行操作README。在那里,您将学习如何使用模板来创建您的仓库以及如何安装必要的工具(例如nox任务运行器)和可选的依赖项(测试支持))。
该README文件包含最新的说明,还详细介绍了如何自定义扩展package.json占位符 (<pythontool-module>,<pythontool-显示名称>等等)。
模板的特点
在通过模板创建扩展后,它将包括以下扩展贡献。假设<pytool-模块>被替换为我的工具,和<pytool-显示名称>与我的工具输入:
- 一条命令 我的工具:重启服务器 (命令 ID:
mytool.restart)。 - 以下设置:
mytool.日志级别mytool.argsmytool.路径mytool.importStrategymytool.解释器mytool.显示通知
- 以下触发器用于激活扩展:
- 关于语言
Python输入:. - 存档于
.py在打开的工作区中找到的扩展。 - 听命令
mytool.restart输入:.
- 关于语言
- 日志输出通道输出 > 我的工具.
整合您的工具
生成的捆绑/工具/服务器.py文件是你将进行大部分更改的地方。待办事项文件中的注释指出了各种定制点。同时搜索待办事项在模板的其他位置,如其他Python和Markdown文件中,查看注释。即使您想保留MIT许可证,也应查看LICENSE文件。
示例
有多个从模板创建的示例实现:
- Pylint - 实施文件的 linting 和代码行动
打开,保存,和关闭输入:. - Flake8 - 实现了代码检查和代码行动。
- Black 格式化工具 - 集成了 Black 格式化工具。
- autopep8 - 集成了autopep8格式化工具。
- isort - 添加代码操作以排序导入。
您还可以查看语言服务器协议规范,以更好地理解pygls语言服务器集成。
扩展开发
模板的README详细介绍了模板提供的开发周期支持。该模板包含命令和配置,以便您可以构建、运行、调试和测试您的扩展。
如果在开发过程中遇到问题,有一个故障排除部分可以帮助解决常见问题。
包装和发布
在发布您的扩展之前,您需要更新扩展package.json字段(例如出版商和许可证) 用于您的特定扩展。您还希望更新辅助Markdown文件 (行为准则.md,CHANGELOG.md等等)。
一旦您的扩展准备就绪可以发布,有一个诺克斯 构建包任务创建一个.vsix 文件,然后您可以将其上传到您的扩展管理页面.
如果您是第一次创建和发布 VS Code 扩展,我们建议您遵循 VS Code 主文档中列出的最佳实践扩展编写主题。在这里,您将找到帮助使您的扩展在市场中看起来很棒的指导,以及如何成为经过验证的发布者,以便用户可以自信地安装您的扩展。