我试图使用运行FastAPI,但它引发了一个错误。
我执行这个命令,
uvicorn api:app --reload --host 0.0.0.0
但是终端有个错误。
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]
发布于 2020-07-16 12:25:50
TL;DR
在文件名前面添加目录名
uvicorn src.main:app
或进入该目录的cd
cd src
uvicorn main:app
长答案
之所以会发生这种情况,是因为您与您的FastAPI应用程序实例不在同一个文件夹中,具体而言:
假设我有这样一个应用程序树;
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运行我的应用程序,我会得到一个类似于您的错误
$ 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".
答案非常简单,请在文件名前面添加文件夹名。
uvicorn src.main:app --reload
或者您可以更改工作目录。
cd src
现在我用我的app实例在文件夹中
src
└── main.py
再次运行你的uvicorn
$ 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.
https://stackoverflow.com/questions/60819376
复制相似问题