尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

pycharm中使用调试模式运行 uvicorn.run(app)报错TypeError: _patch_asyncio.locals.run() got an unexpected keywor解决

pycharm中使用调试模式运行 uvicorn.run(app)报错TypeError: _patch_asyncio.locals.run() got an unexpected keywor解决
📅 发布时间:2026/6/21 9:02:38

问题出现和解决过程

近期更新了pycharm版本从2023.01.06升级了2025.2.1版本,但是在升级之后,使用pycharm的调试模式运行uvicorn.run(app)报错如下:image
产生过以下几个可能性猜测

  1. fastapi和uvicorn版本不匹配的问题
    但是根据目前已经都是按照最新的版本已经更新了,还是不行

  2. 是fastapi初始化内容中存在其他未发现的异步操作引发
    所以自己完全新建了一个最简的fastapi应用,运行结果仍然是报错
    image

  3. 怀疑是pycharm调试模式运行的问题
    怀疑原因如下:

  • uvicorn.run执行的reload参数为true时,能够正常调试运行,但是不设置或者设置为false不能运行
  • 已经尝试过按照最简fastapi应用运行,但是还是报错
  • 已经尝试在控制台能够正常运行

通过上述尝试和排查基本确定是由于pycharm的版本原因导致,通过pycharm配置已解决

与deepseek的确定

你在PyCharm调试模式下遇到的 TypeError: _patch_asyncio.<locals>.run() got an unexpected keyword argument 'loop_factory' 错误,通常与PyCharm调试器和异步事件循环的交互方式有关。下面我来帮你分析原因并提供解决方案。

🔍 问题根源

这个错误的核心原因通常是:

  1. PyCharm异步调试器冲突:PyCharm 2023.3.3及更高版本引入并默认启用了"异步IO调试器支持"的实验性功能。该功能旨在改进对Python异步代码的调试体验,但可能会与uvicorn服务器的事件循环设置产生冲突,导致在传递参数(如loop_factory)时出现异常。
  2. 事件循环环境差异:当你设置 reload=True 时,uvicorn会启动一个子进程来运行应用,这个子进程拥有一个干净的事件循环环境,从而可能避开了主进程中的环境冲突。而当 reload=False 时,uvicorn尝试在当前进程(即PyCharm调试器控制下的进程)的事件循环中启动服务器,此时PyCharm调试器对事件循环的干预就可能引发参数不匹配的错误。

🛠️ 解决方案

你可以尝试以下几种方法,建议从第一种开始:

  1. 禁用PyCharm的实验性异步调试支持
    这是最直接的解决方法,通过关闭可能导致冲突的功能来解决问题。

    • 在PyCharm中,连续按两下Shift键,打开"Search Everywhere"对话框。
    • 输入Registry...(包含三个点)并回车。
    • 在打开的注册表窗口中,找到并取消勾选python.debug.asyncio.repl选项。
    • 关闭注册表窗口,并重新启动调试会话。
      image
      image
  2. 使用命令行启动替代PyCharm运行配置
    绕过PyCharm的调试器,直接使用终端命令启动uvicorn,可以确保服务器在一个干净的环境中启动。

    • 在PyCharm中打开终端(Terminal)。
    • 使用以下命令启动你的应用(请根据你的实际文件路径调整app.main:app):
      uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
      
    • 这种方式通常能有效避免由IDE运行配置引发的问题。
  3. 调整代码中的事件循环配置
    如果问题与事件循环的特定实现(如uvloop)有关,可以尝试强制使用标准的asyncio事件循环。

    • 在你的启动脚本中(通常是包含uvicorn.run的那个文件),进行如下修改:
      import uvicorn
      import asyncio# 在uvicorn.run之前,设置使用标准asyncio事件循环
      asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())if __name__ == "__main__":uvicorn.run("app.main:app",host="0.0.0.0",port=8000,reload=False,  # 即使reload为False也尝试解决loop="asyncio"  # 明确指定使用asyncio)
      
  4. 尝试程序化启动方式
    使用uvicorn.Server和Config类来启动,有时能提供更好的控制。

    • 将你的启动代码修改为:
      import uvicornif __name__ == "__main__":config = uvicorn.Config("app.main:app", host="0.0.0.0", port=8000, reload=False)server = uvicorn.Server(config)server.run()
      

💎 总结

这个错误通常源于PyCharm调试环境与uvicorn事件循环设置之间的交互问题。大多数情况下,禁用PyCharm的异步调试功能或改用命令行启动就能解决。

相关新闻

  • 交换机命令
  • 开写第一篇
  • C#操作Excel核心要点:告别手动,拥抱自动化

最新新闻

  • 湖州市黄金回收白银回收铂金回收彩金回收哪家靠谱?2026年实地测评5家高人气实体门店推荐及联系方式 - 前途无量YY
  • 通用指数定投机器人修改估值分位加仓档位,自定义5档加仓梯度
  • 嵌入式GUI开发实战:emWin图形库配置与集成全解析
  • 泸州市黄金回收店铺权威实力排行榜及电话地址推荐 2026年实测五家诚信优选实体门店 - 亦辰小黄鸭
  • 剑盾100个TR技能
  • Claude Opus 4.7实战:构建98%命中率的可验证AI工作流

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号