创作 Python 扩展
注意:如果您是 VS Code 扩展创作的新手,建议您先阅读您的第一个扩展教程,并尝试创建一个简单的 Hello World 扩展。
Python 扩展提供了 API,供其他扩展与用户计算机上可用的 Python 环境协同工作。请查看 @vscode/python-extension npm 模块,其中包含从扩展访问这些 API 的类型和辅助实用程序。
Python 扩展模板
Python 扩展模板可帮助您开始为喜爱的 Python 工具构建 Visual Studio Code 扩展。它可以是代码检查工具、格式化工具、代码分析工具,或者以上所有工具的组合。该模板将为您提供将工具集成到 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 npm@8.3.0
更新) - VS Code 的Python 扩展
您应该了解如何创建和使用 Python 虚拟环境。
入门
要开始使用,请遵循模板 README 中的说明。在那里您将学习如何使用模板创建您的仓库,以及如何安装必要的工具(例如,nox 任务运行器)和可选依赖项(测试支持)。
该 README 包含最新的说明,并详细介绍了如何自定义扩展的 package.json
占位符 (<pythontool-module>
, <pythontool-display-name>
等)。
模板功能
通过模板创建扩展后,它将包含以下扩展贡献。假设 <pytool-module>
已替换为 mytool
,而 <pytool-display-name>
已替换为 My Tool
- 命令 我的工具:重新启动服务器 (命令 ID:
mytool.restart
)。 - 以下设置
mytool.logLevel
mytool.args
mytool.path
mytool.importStrategy
mytool.interpreter
mytool.showNotification
- 以下扩展激活触发器
- 语言为
python
。 - 在打开的工作区中找到扩展名为
.py
的文件。 - 命令
mytool.restart
。
- 语言为
- 用于日志记录的输出通道 输出 > 我的工具。
集成您的工具
生成的 bundled/tool/server.py
文件是您进行大部分更改的地方。文件中的 TODO
注释指出了各种自定义点。还可以在模板的其他位置(例如其他 Python 和 Markdown 文件)中搜索 TODO
注释。即使您想保留 MIT 许可证,也需要查看 LICENSE 文件。
示例
有几个从模板创建的示例实现
- Pylint - 在文件
open
、save
和close
上实现 linting 和代码操作。 - Flake8 - 实现 linting 和代码操作。
- Black Formatter - 集成 Black 格式化程序。
- autopep8 - 集成 autopep8 格式化程序。
- isort - 添加代码操作以排序导入。
您还可以查看语言服务器协议规范,以更好地理解 pygls
语言服务器集成。
扩展开发
模板的 README 详细介绍了模板中包含的开发周期支持。模板包含命令和配置,因此您可以构建、运行、调试和测试您的扩展。
如果在开发过程中遇到问题,有一个故障排除部分可以帮助解决常见问题。
打包和发布
在发布扩展之前,您需要更新扩展的 package.json
字段(例如 publisher
和 license
),以适应您的特定扩展。您还需要更新辅助 Markdown 文件(CODE_OF_CONDUCT.md
、CHANGELOG.md
等)。
一旦您的扩展准备好发布,就有一个 nox
build-package
任务来创建一个 .vsix
文件,然后您可以将其上传到您的扩展管理页面。
如果您是创建和发布 VS Code 扩展的新手,我们建议您遵循主要 VS Code 扩展创作主题中概述的最佳实践。在这里,您将找到指导,帮助您的扩展在 Marketplace 上看起来很棒,以及如何成为经过验证的发布者,以便用户放心地安装您的扩展。