PyCharm调试FastAPI测试触发_UnixSelectorEventLoop属性错误
问题解决:FastAPI测试在PyCharm DEBUG模式下的AttributeError
错误成因
这是PyCharm调试器与Python asyncio事件循环在MacOS M1(ARM架构)环境下的兼容性问题:
- PyCharm调试器开启asyncio调试特性时,会尝试访问事件循环的
_compute_internal_coro内部属性 - 但MacOS ARM版本的Python标准库中,
_UnixSelectorEventLoop并没有这个属性,调试钩子注入时就会抛出AttributeError - 正常运行时没有调试器的额外钩子,因此测试可以正常通过
解决方案
1. 更新PyCharm到最新版本
JetBrains在2023.2及以后的版本中修复了ARM架构下asyncio调试的相关bug,直接升级PyCharm是最彻底的解决方式。
2. 替换asyncio事件循环为uvloop
安装uvloop并在测试代码中指定事件循环策略,绕过标准库事件循环的兼容性问题:
首先安装依赖:
pip install uvloop
然后在测试文件开头添加:
import asyncio import uvloop # 强制使用uvloop作为事件循环 asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
3. 禁用PyCharm的Asyncio调试特性
在PyCharm中操作:
- 打开「Run/Debug Configurations」
- 找到对应的测试配置,切换到「Python Debugger」标签页
- 取消勾选「Asyncio debugging」选项
- 保存配置后重新启动调试
内容的提问来源于stack exchange,提问作者jossefaz
相关产品推荐
相关产品推荐

