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

CentOS 7运行FastAPI应用遇asyncio模块AttributeError求助

问题分析与解决方案

问题根源

你的错误AttributeError: module 'asyncio' has no attribute 'run'完全是Python版本导致的:

  • asyncio.run()是Python 3.7及以上版本才新增的API,而你使用的Python 3.6.8并不支持这个方法
  • 你安装的最新版uvicorn已经放弃了对Python 3.6的兼容,内部代码直接调用了这个高版本API

解决方案

方案1:降级uvicorn到兼容Python 3.6的版本

这是最快的临时解决办法,选择最后一批支持Python3.6的uvicorn版本:

  1. 先卸载当前的uvicorn:
    pip3 uninstall -y uvicorn
    
  2. 安装指定兼容版本:
    pip3 install uvicorn==0.16.0
    
  3. 重新启动应用:
    python3 -m uvicorn main:app
    

方案2:升级Python到3.7+(推荐长期方案)

Python 3.6已经停止官方维护,升级到更高版本不仅能解决这个问题,还能获得更多新特性和安全补丁:
在CentOS 7上可以通过SCL源安装高版本Python:

  1. 安装CentOS SCL源:
    sudo yum install -y centos-release-scl
    
  2. 安装Python 3.8(也可以选3.9/3.10等):
    sudo yum install -y rh-python38
    
  3. 启用Python 3.8环境(每次会话都需要执行,或者加到bashrc里):
    scl enable rh-python38 bash
    
  4. 创建并激活新的虚拟环境(可选但推荐):
    python -m venv fastapi-venv
    source fastapi-venv/bin/activate
    
  5. 安装FastAPI和最新版uvicorn:
    pip install fastapi uvicorn
    
  6. 启动应用:
    uvicorn main:app
    

额外说明

之前的No module named uvicorn错误是因为虚拟环境中没有安装依赖,后续操作尽量在激活虚拟环境后执行,避免全局依赖冲突。

错误回溯信息:

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/usr/local/lib/python3.6/site-packages/uvicorn/__main__.py", line 4, in <module>
    uvicorn.main()
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1128, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1053, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.6/site-packages/click/core.py", line 754, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/uvicorn/main.py", line 435, in main
    run(app, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/uvicorn/main.py", line 461, in run
    server.run()
  File "/usr/local/lib/python3.6/site-packages/uvicorn/server.py", line 67, in run
    return asyncio.run(self.serve(sockets=sockets))
AttributeError: module 'asyncio' has no attribute 'run'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:13:21