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

FastAPI项目uvicorn可运行,直接Python启动报模块找不到错误

问题原因及解决方案

问题根源

当你执行python app/main.py时,Python会将app/目录设为当前脚本的运行目录,不会自动把项目根目录(包含app文件夹的那个目录)加入到Python的模块搜索路径(sys.path)。这时候代码里的from app.api_v1.apis import api_router会找不到app模块——因为sys.path里没有项目根目录,Python不知道去哪找这个名为app的包。

而用uvicorn app.main:messages_classification_app启动时,你是在项目根目录执行的命令,uvicorn会自动把当前工作目录(项目根)添加到sys.path中,所以能正常识别app包。

解决办法

方法1:以模块方式运行脚本

在项目根目录执行以下命令:

python -m app.main

-m参数会让Python把当前目录加入sys.path,以模块的方式启动app.main,这样就能正确找到app包下的子模块。

方法2:手动添加项目根目录到sys.path

修改app/main.py的开头部分,先把项目根目录加入Python的搜索路径:

import os
import sys
# 获取当前脚本的绝对路径,再向上跳一级得到项目根目录
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

# 之后再导入其他模块
from fastapi import FastAPI
import uvicorn
from app.api_v1.apis import api_router

这样不管从哪个路径启动main.py,Python都能找到项目根目录下的app包。

方法3:继续使用uvicorn命令启动

这其实是FastAPI官方推荐的启动方式,本身就不存在模块路径问题,可以保持使用。

内容的提问来源于stack exchange,提问作者George Katsanos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:10:30