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

使用Bleak库时遇asyncio.run()运行时错误的求助

解决Spyder中运行Bleak异步代码的RuntimeError问题

错误原因

Spyder的IPython内核默认已启动一个asyncio事件循环,asyncio.run()会尝试创建新的事件循环,触发RuntimeError: asyncio.run() cannot be called from a running event loop错误。

解决方案

方案1:修改代码复用现有事件循环

将原代码中的asyncio.run(main())替换为以下代码,直接使用当前已运行的事件循环:

import asyncio
from bleak import BleakScanner

async def main():
    devices = await BleakScanner.discover()
    for d in devices:
        print(d)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

方案2:临时关闭IPython自动await功能

在Spyder的IPython控制台中先执行以下魔法命令:

%autoawait off

之后运行你的原代码即可。

方案3:永久禁用Spyder的asyncio集成

  1. 打开Spyder,点击顶部菜单栏的工具 -> 偏好设置
  2. 在左侧列表选择IPython控制台 -> 高级设置
  3. 取消勾选启用asyncio事件循环集成选项
  4. 重启Spyder,原代码即可正常运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 16:22:11