最近,不少使用 老版本 MicroPython 固件(如 ESP32 v1.20/v1.21、k230/openmv 魔改版本)的开发者反馈:从 uPyPi 仓库安装库时,总会遇到神秘报错:
ValueError: need more than 2 values to unpack

哪怕是最简单的单文件库,也无法通过
mip.install() 成功部署,而高版本固件(v1.23+、v1.25+)和本地安装却一切正常。
我们的开发团队(包括那位白天装 DIY 安防设备、晚上挤时间写代码的印尼老哥)在测试 k230 兼容性时,也踩中了这个坑,花了一整晚终于摸清了问题根源,并找到了可行的解决方案。

mip.install("https://upypi.net/pkgs/{包名}/{版本号}") 远程安装 uPyPi 库package.json 下载成功,但解析文件时抛出
ValueError: need more than 2 values to unpack.py(不通过
package.json)可成功我们对比了 MicroPython 官方 pi 源和 uPyPi 的package.json结构后发现:
latest.json + 哈希文件路径(如
https://micropython.org/pi/v2/file/23/23ba4f89),老版本 mip 原生支持这种哈希映射格式。package.json 中使用
相对路径声明文件(如
"microflask.py"),但老版本 mip 对相对路径的解析逻辑更严格,无法兼容这种格式,导致拆包时抛出 “需要更多值解包” 的错误。package.json 解析失败。

将 uPyPi 包的
package.json 中
文件路径改为绝对路径,同时指定安装目标为可写目录(适配 k230 等设备):
{ "urls": [ ["https://upypi.net/pkgs/microflask/0.0.20260321/microflask.py", "sha256:..."] ], "version": "0.0.20260321" }
安装时指定target="/sdcard"(k230 等设备的可写 SD 卡目录):
mip.install("https://upypi.net/pkgs/microflask/0.0.20260321", target="/sdcard")
uPyPi 团队将在下个版本 自动兼容老版本 mip 的路径解析逻辑,所有已上传包无需手动修改,即可支持老固件安装。
mpremote 或即将上线的
Thonny uPyPi 插件,一键下载并部署到设备,完全绕过
mip 的网络解析问题k230/openmv 等设备由于魔改 MicroPython,还存在额外限制:
/data/lib 可写,但根目录
/ 不可写,需指定
target="/sdcard" 或
target="/data/lib"mpremote 传输失败,需使用 Thonny 插件或手动拷贝mip 版本问题mip,手动修改
package.json 为绝对路径即可来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70049702/viewspace-3114132/ ,如需转载,请注明出处,否则将追究法律责任。