在 VSCode 中提升 MicroPython 生产力
现代编辑器中普遍存在的 IntelliSense 和代码检查功能,对于 MicroPython 项目而言,开箱即用并不奏效。 虽然该语言是 Python,但所使用的模块与 CPython 不同,而且不同的移植版本拥有不同的模块和类,或者具有不同参数的相同类。
在现代编辑器中编写 MicroPython 代码,不应需要保持浏览器打开以查看读取传感器、点亮 LED 或发送网络请求的确切参数。
幸运的是,通过一些额外的配置和数据,可以让编辑器理解你的 MicroPython 变体,无论你使用的是预编译固件之一,还是运行一次性自定义固件版本。
]
为了实现这一点,需要以下几项:
- 使用 PEP 484 类型提示为固件中的原生/启用模块创建存根文件
- VS Code Python 扩展的特定配置
- Pylint 的特定配置 [ 可选 ]
- 抑制与 MicroPython 原则或代码优化相冲突的警告。
请查阅 [https://micropython-stubber.readthedocs.io] 上的文档
配置好这些之后,VSCode 将在很大程度上理解 MicroPython,帮助你编写代码,并在部署到开发板之前捕获更多错误。
请注意,上述内容不仅限于 VSCode 和 pylint,但这恰好是我使用的组合。
许多子模块已经生成,并通过 PyPi、github 或工具预装进行共享,因此你很可能只需获取一份副本,几分钟内即可开始高效工作。
从 PyPI 安装预构建的存根
本节介绍如何从 PyPI 安装存根,以及如何在项目中使用它们。 如果您想创建或维护存根 - 请参阅下一节。
- 在 typings 文件夹中安装(推荐)
pip install -U micropython-<port>[-<board>]stubs --no-user --target ./typings - 在 venv 中安装(激活后)
pip install -U micropython-<port>[-<board>]stubs --no-user
示例:
pip install -U micropython-stm32-stubs
# Install stubs for a specific version.
pip install -U micropython-esp32-stubs==1.20.0.*
# Install stubs for a specific board.
pip install -U micropython-rp2-pico_w-stubs
有关如何使用存根的更多详细信息,请参阅 RTD 上的文档
-
姊妹仓库 MicroPython-stubs 包含了我与他人合作收集的所有 stubs,可直接使用。 该仓库还包含示例配置文件,可轻松适配您的环境。
-
Micropython-stubber 在其某些操作中使用了 MPFlash。 mpflash 曾托管在此仓库中,但已迁移至其独立仓库。
构建存根的快速入门
pip install micropython-stubber
cd my_stub_workspace
mkdir all-stubs
# pick a firmware version (tag, stable, preview)
stubber switch stable
# generate doc-based stdlib stubs for the selected version
stubber docstubs --enrich
# capture frozen modules from reference firmware downloads
stubber frozen --version stable --enrich
# merge the pieces for one or more targets
stubber merge --port esp32 --board ESP32_GENERIC --version stable
stubber merge --port rp2 --board RPI_PICO_W --version stable
# build final wheel-style outputs in all-stubs/<port>/<board>
stubber build --port esp32 --board ESP32_GENERIC --version stable
switch在运行其他命令之前,将工作区锁定到 MicroPython 的某个版本。docstubs拉取基于文档的存根;frozen添加特定于板卡的冻结模块。merge和build将所有内容合并为位于all-stubs/下的可安装存根。
常用命令
- 列出可用的固件标签:
stubber switch --list - 为某个端口的所有板卡创建合并的存根:
stubber merge --port esp32 --board all --version stable - 重新构建已下载的工件:
stubber build --port esp32 --board ESP32_GENERIC --version stable - 使用文档字符串/参数提示丰富现有的存根集:
stubber docstubs --enrich
输出及其使用位置
- 生成的 wheel 和文件夹位于
all-stubs/<port>/<board>/<version>下。 - 将编辑器的类型检查器(Pyright/Pylance/Mypy)指向
all-stubs路径,或将生成的 wheel 安装到项目的虚拟环境中。 - 关于完整的操作示例,请参阅笔记本 Manual stub build chain.ipynb,它镜像了上述使用的 CLI 工作流。
处理自定义 MicroPython 构建
如果您正在使用 MicroPython 的分支、分支或自定义构建(例如自定义的 RPi Pico W 固件),请参阅 Custom MicroPython Guide 以获取有关如何为您的特定构建生成存根的详细说明。
开发与测试
这在 docs 文件夹中的 developing 和 testing 文档中有更详细的描述。
主分支
默认分支的名称已更改为 main。
如果您在 main 之前克隆过此仓库,需要调整本地仓库以了解此更改,或创建一个新克隆。
要更新,请运行以下命令:
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
更多信息请参阅 重命名分支
许可证
MicroPython-Stubber 采用 MIT 许可证,所有贡献都应遵循此 LICENSE.
贡献
本项目遵循 all-contributors 规范。欢迎任何形式的贡献!