构建 uPyPi :解决 MicroPython 库存在的混乱状况
扫描二维码
随时随地手机看文章
在 MicroPython 生态系统发展的早期阶段,当开发者分享或使用第三方库时,他们往往需要手动下载多个文件,然后将它们复制到项目目录中。这种“复制粘贴”的方式存在诸多不便之处:
•文件容易被忽视,从而导致程序出现错误。
•版本混乱,不清楚正在使用的到底是哪个版本的库
•依赖项管理颇为麻烦,因为这需要用户自行查找所有的依赖文件。
•在与他人分享文件时,所有文件都需要进行打包处理,这一过程涉及诸多繁琐步骤。
后来,MicroPython 社区推出了名为 mip(mip 用于安装包)的工具,类似于 Python 中的 pip,它能够自动下载并管理包。然而,其默认索引是 micropython-lib,而第三方库的发布和发现仍然不够便捷。
为 MicroPython 提供类似 PyPI 类型的软件包平台包括 mim 和 awesome-micropython 等,但它们都存在一些较为严重的问题:
于是,uPyPi 应运而生——它是一个专为 MicroPython 设计的软件包管理库,就像“MicroPython 版的 PyPI”一样,使开发者能够轻松上传、分享和查找驱动程序包,彻底解决了早期的库管理难题。
MIM 平台的核心问题:
•版本管理机制:缺乏包版本冻结的功能,缺乏诸如版本锁定和依赖版本约束等基本功能,并且无法保证包的长期可用性和依赖项的稳定性。
无法控制的依赖关系维护风险:软件包的可用性完全取决于原始开发者的维护状态。如果开发者停止维护、升级项目或删除存储库,所包含的软件包的链接将直接失效,后续项目将受到连锁影响,而该平台也没有备用或迁移机制。
•验证范围有限:仅对提交的软件包的安装兼容性进行验证,而不涵盖诸如版本兼容性、长期可维护性以及 API 稳定性等核心风险点。
“awesome-microPython”项目的核心问题:
这仅仅是一个索引集合,不具备验证功能:本质上是一个包含驱动程序和库的链接索引列表,既没有针对有效性、兼容性或安全性的验证流程设定,也无法保证所包含内容的实际可用性。
版本兼容性严重滞后:所包含的大量驱动程序是基于 MicroPython v1.19 开发的,而当前的 MicroPython 已迭代至 v1.27 及以上版本,核心 API 有了多项变更,导致较旧的驱动程序无法在新版本环境中正常运行。
信息透明度不足:诸如图书馆的维护状态以及兼容版本的范围等关键信息未做标注,这使得用户在使用过程中难以预见兼容性问题,容易出现代码错误和功能故障等情况。
使用 uPyPi 来管理驱动程序包具有以下核心优势:
•一键安装:用户只需输入一行命令即可自动下载并安装该软件包及其所有依赖项,无需手动复制文件。
•版本可控:可以指定特定版本的软件包进行安装,以避免版本冲突。
•自动依赖项管理:该工具会自动解析并下载依赖项,从而无需手动查找文件。
•轻松分享:将驱动程序上传至 uPyPi 后,全球开发者即可轻松找到并使用您的驱动程序包。
•易于更新:当软件包有更新时,用户只需重新执行安装命令即可获取最新版本。
核心功能包括:
•类似 PyPI 的软件包管理系统:支持上传、浏览、下载以及对 MicroPython 软件包的整个生命周期管理,并适应 MicroPython 生态系统的软件包管理需求。
•标准化的元数据管理与控制:所有软件包都必须包含一个“package.json”文件,该文件统一定义了诸如名称和版本等核心元数据,以确保软件包的一致性和兼容性。
•精确的硬件/固件适配:支持根据硬件型号(例如 RP2040)和固件环境对数据包进行过滤和适配,解决不同硬件/版本环境下的适配难题。
•多语言及可视化管理:提供一键切换功能,可在中文和英文双语界面之间轻松切换;个人仪表盘可实现对上传文件的一站式跟踪与管理,并清晰显示贡献数据。
本文编译自hackster.io





