You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroPython的uasyncio模块为何无run函数?ESP8266使用遇问题

问题原因及解决方案

原因分析

你碰到的AttributeError: 'module' object has no attribute 'run',核心原因是ESP8266搭载的MicroPython内置uasyncio版本太旧。

你参考的文档对应的是第三方维护的uasyncio v3版本,这个版本新增了run()、new_event_loop()这类简化API;但ESP8266官方MicroPython固件里的uasyncio还是旧版核心,没有这些高阶封装方法——从你列出的模块属性列表也能验证这一点,只有get_event_loop()这类基础方法。

解决方案

把代码里的asyncio.run()替换成旧版uasyncio的事件循环运行逻辑,修改后的代码如下:

from robot import *
import uasyncio as asyncio

def main(args):
    robot = MicroportalRobot("robotName", "serverAddr", 8266)
    # 获取事件循环实例
    loop = asyncio.get_event_loop()
    # 运行协程直到完成
    loop.run_until_complete(robot.main())

if __name__ == "__main__":
    main([])

如果想长期使用新版uasyncio的特性,还可以尝试两个方向:

  • 升级ESP8266的MicroPython固件到最新稳定版,部分新版固件会同步更新内置的uasyncio
  • 手动安装第三方uasyncio v3库(注意:ESP8266内存有限,可能存在兼容性或资源不足问题)

内容的提问来源于stack exchange,提问作者Kaki In

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 00:52:37