Windows终端启动Uvicorn服务报错无法导入main模块
问题根因
终端抛出Error loading ASGI app. Could not import module "main"错误的核心原因是:Uvicorn在执行命令的当前工作目录下,无法找到名为main.py的入口代码文件,和Windows系统本身、虚拟环境激活状态无关。日志里的--reload生产环境警告只是常规开发提示,不是导致启动失败的原因。
排查与解决方案
按优先级依次排查即可:
- 第一步:确认当前工作目录正确
从日志可以看到你执行命令时的路径是E:\Python Practice\FastAPI\fastapi\fastapi,先在当前终端执行dir命令列出目录下所有文件,检查是否存在main.py。
如果找不到该文件,说明你进入的目录层级错误,用cd命令切换到main.py实际存放的目录后再执行启动命令即可。例如如果你的main.py存放在上一级的E:\Python Practice\FastAPI\fastapi路径下,执行:cd E:\Python Practice\FastAPI\fastapi - 第二步:确认入口文件后缀正确
Windows默认会隐藏已知文件类型的扩展名,很容易出现看似命名为main.py、实际全名是main.py.txt的情况。打开对应文件夹的文件资源管理器,勾选「显示-文件扩展名」选项,确认入口文件后缀确实是.py,修正错误命名即可。 - 第三步:确认启动命令和文件名匹配
Uvicorn启动命令的格式为uvicorn <入口文件名(不带.py后缀)>:<FastAPI实例对象名>,如果你的入口文件本身就不叫main.py(比如命名为app.py、run.py),需要把命令里的main替换成实际的文件名。例如入口文件是app.py时,启动命令要改为:uvicorn app:app --reload
内容的提问来源于stack exchange,提问作者Sudip
相关产品推荐
相关产品推荐

