编写 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 [email protected]
更新) - VS Code 的 Python 扩展
您应该知道如何创建和使用 Python 虚拟环境。
入门
要开始使用,请按照模板 README 中的说明进行操作。您将在其中学习如何使用模板创建您的存储库以及如何安装必要的工具(例如,nox 任务运行器)和可选依赖项(测试支持)。
README 具有最新的说明,并且还详细介绍了如何自定义扩展的 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
- 以下扩展激活的触发器
- 在语言
python
上。 - 在打开的工作区中找到带有
.py
扩展名的文件时。 - 在命令
mytool.restart
上。
- 在语言
- 日志记录的输出通道 输出 > 我的工具。
集成您的工具
生成的 bundled/tool/server.py
文件是您将进行大部分更改的地方。文件中的 TODO
注释指出了各种自定义点。此外,在模板中的其他位置(例如其他 Python 和 Markdown 文件)中搜索 TODO
注释。您将需要查看 LICENSE 文件,即使您想保留 MIT 许可证。
示例
有几个从模板创建的示例实现
- Pylint - 在文件
open
、save
和close
上实现代码检查和代码操作。 - Flake8 - 实现代码检查和代码操作。
- 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 上看起来很棒,以及如何成为经过验证的发布者,以便用户可以放心地安装您的扩展。