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

Spyder运行asyncio代码报错:无法操作正在运行的事件循环

报错原因

Spyder基于IPython内核运行代码,IPython 7.0及以上版本默认会预先启动一个asyncio事件循环,用于支持交互式环境下的异步代码执行;同时Spyder自身基于Qt框架开发,也会常驻运行Qt事件循环,和asyncio事件循环做了集成。因此你在脚本中手动新建事件循环并调用run_until_complete()时,就会触发RuntimeError: Cannot run the event loop while another loop is running报错。
而CMD下运行代码时是启动独立的纯Python进程,没有预先运行的事件循环,因此代码可以正常执行。

解决方案

下面三个方案任选其一即可:

  • 方案1:使用nest_asyncio补丁允许事件循环嵌套
    这是改动最小的方案,先执行安装命令:pip install nest_asyncio,之后在你的代码开头添加两行代码,原有其余代码不需要修改:
    import nest_asyncio
    nest_asyncio.apply()
    
  • 方案2:复用当前已运行的事件循环
    不需要新建事件循环,直接获取当前环境已存在的事件循环运行协程即可,注意不要关闭该循环(否则会导致Spyder内核异常),替换原有循环相关代码为:
    loop = asyncio.get_event_loop()
    loop.run_until_complete(myWork())
    
  • 方案3:修改Spyder运行配置,使用独立进程执行脚本
    点击顶部菜单栏「运行」→「配置每文件运行选项」,勾选「在新的专用Python解释器中执行」后保存。之后运行脚本会启动独立Python进程,和CMD运行环境完全一致,不会出现循环冲突问题。

额外提示:你的脚本文件名是async.py,和Python标准库异步模块的命名冲突,建议修改为其他文件名(比如async_demo.py),避免后续出现导入异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:07