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

Poetry配置FastAPI启动脚本报No file/folder found错误

问题根因

这个报错和你写的脚本入口路径没有关系,是Poetry的默认包扫描规则和你的目录结构不匹配导致的:

  • 你的pyproject.toml中项目名设置为backend,Poetry默认会自动扫描两个位置的代码包:项目根目录下和项目同名的backend文件夹、标准src布局下src/backend文件夹。你当前的目录结构里这两个位置都不存在,Poetry在安装项目、生成脚本入口的阶段就找不到要关联的项目包,直接抛出No file/folder found for package backend错误,根本走不到执行你配置的入口函数那一步。
  • 你直接执行poetry run python asgi.py能正常启动,是因为这个命令直接把asgi.py当作独立脚本运行,走文件内if __name__ == "__main__"的逻辑,完全跳过了Poetry的包扫描和脚本生成流程,自然不会触发这个报错。
  • 另外你之前写的asgi:__main__入口本身也是错误配置:Poetry scripts要求冒号后面是可被导入调用的Python对象,__main__是脚本直接执行时的模块名标识,不是可以被导入调用的函数/类。
解决方法

二选一即可:

方案1:调整为标准项目结构(长期维护推荐)

把代码整理为Poetry默认识别的src布局,调整后目录结构如下:

├── backend
  ├── src
  │  └── backend
  │     ├── __init__.py
  │     └── asgi.py
  ├── Dockerfile
  ├── poetry.lock
  └── pyproject.toml
  • 在asgi.py中添加显式的启动函数,不要依赖__main__判断:
    # asgi.py 示例
    from fastapi import FastAPI
    import uvicorn
    
    app = FastAPI()
    # 原有路由、依赖等代码保持不变
    
    def main():
        uvicorn.run("backend.asgi:app", host="0.0.0.0", port=8000)
    
  • 修改pyproject.toml的scripts配置:
    [tool.poetry.scripts]
    foo = "backend.asgi:main"
    
  • 在项目根目录执行poetry install重新安装项目、生成脚本入口,之后执行poetry run foo即可正常启动。

方案2:不调整目录,手动指定包扫描规则

如果你不想改动现有目录结构,直接在pyproject.toml中显式告诉Poetry要识别的代码文件即可:

  • 修改pyproject.toml,在[tool.poetry]段添加packages配置,同时修正scripts入口:
    [tool.poetry]
    name = "backend"
    version = "0.1.0"
    description = ""
    authors = ["Pierre-Alexandre35 <46579114+pamousset75@users.noreply.github.com>"]
    readme = "README.md"
    # 新增下面配置,明确告诉Poetry要把根目录的asgi.py纳入包
    packages = [{ include = "asgi.py" }]
    
    # 其他依赖配置保持不变
    
    [tool.poetry.scripts]
    foo = "asgi:main"
    
  • 和方案1一样,在asgi.py中添加可调用的main启动函数,注意把uvicorn.run的模块路径改成asgi:app即可。
  • 执行poetry install刷新配置后,再运行poetry run foo即可正常启动。
注意事项
  • 每次修改pyproject.toml的包配置、scripts配置后,必须重新执行poetry install,否则新配置不会生效。
  • 不要在scripts入口中写__main__、.这类不符合规范的值,必须指向明确可导入的Python可调用对象。

内容的提问来源于stack exchange,提问作者Pierre-Alexandre35

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:09:15