首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FastAPI抛出一个错误(加载ASGI应用程序时出错)。无法导入模块"api")

FastAPI抛出一个错误(加载ASGI应用程序时出错)。无法导入模块"api")
EN

Stack Overflow用户
提问于 2020-03-23 18:16:12
回答 15查看 107.8K关注 0票数 103

我试图使用运行FastAPI,但它引发了一个错误。

我执行这个命令,

代码语言:javascript
运行
复制
uvicorn api:app --reload --host 0.0.0.0

但是终端有个错误。

代码语言:javascript
运行
复制
Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Started reloader process [23445]
Error loading ASGI app. Could not import module "api".
Stopping reloader process [23445]
EN

Stack Overflow用户

回答已采纳

发布于 2020-07-16 12:25:50

TL;DR

在文件名前面添加目录名

代码语言:javascript
运行
复制
uvicorn src.main:app 

或进入该目录的cd

代码语言:javascript
运行
复制
cd src
uvicorn main:app 

长答案

之所以会发生这种情况,是因为您与您的FastAPI应用程序实例不在同一个文件夹中,具体而言:

假设我有这样一个应用程序树;

代码语言:javascript
运行
复制
my_fastapi_app/
├── app.yaml
├── docker-compose.yml
├── src
│   └── main.py
└── tests
    ├── test_xx.py
    └── test_yy.py

$ pwd         # Present Working Directory
/home/yagiz/Desktop/my_fastapi_app

我和我的app实例不在同一个文件夹中,所以如果我尝试用uvicorn运行我的应用程序,我会得到一个类似于您的错误

代码语言:javascript
运行
复制
$ uvicorn main:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [40645] using statreload
ERROR:    Error loading ASGI app. Could not import module "main".

答案非常简单,请在文件名前面添加文件夹名。

代码语言:javascript
运行
复制
uvicorn src.main:app --reload

或者您可以更改工作目录。

代码语言:javascript
运行
复制
cd src 

现在我用我的app实例在文件夹中

代码语言:javascript
运行
复制
src
└── main.py

再次运行你的uvicorn

代码语言:javascript
运行
复制
$ uvicorn main:app --reload
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [40726] using statreload
INFO:     Started server process [40728]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
票数 186
EN
查看全部 15 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60819376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档