一、代码怎么跑到板子上
QuecPython 应用是 .py 脚本,不需要编译链接。部署方式是:
- 用官方工具 QPYcom 把脚本下载到模组的 /usr 分区
- 在串口 REPL 里执行 example.exec(‘/usr/_main.py’) 启动
底层固件是厂商预编译好的,我们只写应用层。
二、坑 1:自定义模块 import 失败
把多个 .py 一起烧进 /usr,主程序 import 时报 ImportError。
原因:直接 exec 时,sys.path 里可能不含 /usr。解决:
import sys
if "/usr" not in sys.path:
sys.path.insert(0, "/usr")
所有自定义模块的 import 都要放在这行之后。
三、坑 2:模块命名冲突,import 拿到的是别的库
自定义模块的文件名如果和内置库重名,import 到的可能不是你写的那个文件。
规避方法:给业务模块起不会撞名的名字(比如相机模块不要叫 camera),必要时加后缀区分。
四、坑 3:别让代码一上电就自动跑
MicroPython 上电会约定自动执行 main.py。调试期间如果不想一上电就跑主流程,就不要把入口命名为 main.py(例如改用 _main.py),改由手动 exec 启动。
这样做的好处:烧完代码不会立刻跑起来,可以先检查文件、再手动运行,避免一上电就进业务逻辑而没法调试。
五、坑 4:烧录前先做语法校验
设备上排查语法错误成本高,先在 PC 上过一遍:
python -m py_compile _main.py voice.py cloud.py camera_srv.py
注意 py_compile 会在本地生成 pycache,提交或烧录前清掉。
六、调试手段
主要靠串口日志。几个建议:
- 关键节点打一行事件日志即可,不要每帧都打,否则刷屏反而看不清。
- 诊断性的内存打印(如 gc.mem_free())只在排查时加,事后删掉。
- 异常一定要带 repr(e),否则只看到"失败"两个字。
- 把"每帧级"的日志删掉,只留"事件级"的,一条正常对话就只有寥寥几行。
七、小结
- 部署等于下载到 /usr 加手动 exec,没有编译链接。
- 先修 sys.path,再 import。
- 模块名别撞内置库。
- 入口别叫 main.py,防止上电自动跑。
- 烧录前 py_compile,日志要"少而准"。