改了 MicroPython 的 mip 源码!低版本 ESP32 也能一键装 upypi/gitee 包了

0 阅读2分钟

用 ESP32 刷过老版本 MicroPython 固件的朋友,一定懂这种崩溃:

  • 想装个 upypi 上的包,mip 直接报错「不支持相对目录」
  • 想拉取 gitee/gitcode 的代码,还要手动拼长长的 URL,手都敲酸
  • 老固件更不上新特性,想装个新包简直要了命

今天,有一位开发者魔改了 MicroPython 的 mip 源码,做了这个 mips 工具:专门给低版本 mip 续命,还加了国产平台简写,让 ESP32 也能一键装包!

6ad9ea486aeaec9e767b07448cbc953a.png

mips 是什么?给老版 mip 打个「增强补丁」

mips 是基于 MicroPython 官方 mip 源码修改的增强版工具,核心解决两个痛点:

  1. 低版本 mip 不支持相对目录​:package.json 全用绝对地址,老固件也能直接下载
  2. 国产平台访问麻烦​:新增 upypi:/gitee:/gitcode: 三种简写,一行命令拉取国产仓库

它完全兼容原生 mip 语法,你甚至可以把它当成「更好用的 mip」来用 —— 老项目不用改一行代码,直接替换就能跑。

核心功能亮点:这几个特性太香了

  • ✅ ​兼容低版本固件​:哪怕是几年前的 ESP32 老固件,也能通过 mips 正常安装包,再也不用为了装包刷固件

  • ✅ ​国产平台简写​:

    • upypi:microflask → 自动映射到 https://upypi.net/pkgs/microflask/
    • gitee:wth_iw0/microflask → 直接拉取 gitee 仓库代码
    • gitcode:wth_iw0/microdns → 支持 gitcode,还加了 sleep(2) 反爬机制
  • ✅ ​双版本运行​:

  • mips.py:给 MicroPython 开发板用,直接跑在 ESP32 上

  • mips_cpy.py:给标准 Python 用,电脑上也能提前下载包,再传到开发板

  • ✅ ​智能路径管理​:mips_cpy 会自动找 lib 文件夹(优先级高于 Lib),没有就存当前目录,不用手动建文件夹

  • ✅ ​debug 模式​:加了 debug=True 参数,能看到完整下载日志,哪里报错一眼看清

手把手教你用:5 分钟跑通

库的地址就在upypi上:upypi.net/ 搜索:mips

image.png

a525f794fec4cb9ca1b6b8bb344129b2.png

点击详情页 ,进入 复制 下载 指令即可:

23d7332d271ccd16edd7521581f8815c.png

1fcf58218dae78faaf3e75b08dc7a03c.png

看到终端输出 Done,就说明安装成功了 ——mips.pymips_cpy.py 会自动传到 ESP32 的 /lib 目录。

详细说明可看:upypi.net/zh/pkgs/mip… image.png

image.png

d6b7ac541c210694a9537815274d5b27.png

6cd90e328b9af66562b96d5ed0a5ffc5.png

原理简述

  • URL 重写​:新增 _rewrite_url() 函数,把 upypi:/gitee:/gitcode: 自动转成完整 URL
  • 反爬机制​:针对 gitcode,在下载前加了 sleep(2),避免被反爬拦截
  • 输出优化​:修改了 Copying 日志,加上了完整 URL,方便排查问题
  • 路径兼容​:把 package.json 里的相对路径全改成绝对路径,让低版本 mip 能识别
  • 标准 Python 适配​:把 MicroPython 专属 API 替换成标准 Python 兼容的写法,做出了 mips_cpy.py

d5e59784725650fc897d8317ffe330f4.png

36899fedf4a2fad18e969c8b792e9103.png