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

FastAPI项目uvicorn启动报ModuleNotFoundError,手动运行正常

排查FastAPI启动时ModuleNotFoundError(找不到prompts模块)的步骤
  • 检查导入语句的正确性
    打开data_classifier/classification_pipeline.py,查看导入prompts的代码:

    • 如果用的是import prompts,这种写法依赖当前文件所在目录的模块搜索路径,直接运行该文件时生效,但uvicorn从项目根目录启动时,Python会在根目录查找prompts.py,自然找不到。改成相对导入from . import prompts(前提是prompts.py和classification_pipeline.py在同一目录),或者绝对导入from data_classifier import prompts即可。
  • 确认启动命令的工作目录
    确保你是在项目根目录下执行uvicorn main:app --reload。如果在子目录(比如data_classifier/下)启动,Python的模块搜索路径会以当前子目录为基准,无法正确识别上层目录的包结构,导致找不到模块。

  • 排查文件结构变更
    回忆最近是否移动过prompts.py的位置,或者调整过data_classifier目录的层级?比如之前prompts.py在项目根目录,现在移到data_classifier下,但导入语句未同步修改,就会导致启动时找不到。

  • 对比两种启动方式的sys.path差异
    在classification_pipeline.py开头添加以下代码,分别在直接运行和uvicorn启动时查看输出:

    import sys
    print("当前sys.path:", sys.path)
    

    直接运行该文件时,data_classifier目录会被加入sys.path;而uvicorn启动时,如果项目根目录不在sys.path中,或者data_classifier未被识别为Python包,就会找不到模块。如果是这个问题,可以在main.py开头手动把项目根目录加入sys.path:

    import sys
    from pathlib import Path
    sys.path.append(str(Path(__file__).parent))
    
  • 检查命名冲突
    排查是否新增了与prompts.py同名的文件(比如项目根目录下新建了prompts.py),或者误安装了名为prompts的第三方包。执行pip list查看已安装包,如有同名包,卸载即可:pip uninstall prompts。

  • 验证__init__.py文件状态
    虽然Python 3.3+不需要__init__.py就能识别包,但如果之前data_classifier目录有该文件,最近被删除或修改过,可能影响包的导入逻辑。可以尝试在data_classifier目录下新建一个空的__init__.py文件测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 05:21:02