上一个问题解决后出现的连锁问题:
https://segmentfault.com/q/1010000044426482
uvicorn 开启服务报错 Error loading ASGI app. Could not import module "app".
目录结构:
my_app_name
├── py
│ └── python.exe 等
├── main.py
├── app.py
└── run.bat
run.bat
@echo off
REM 用 python.exe 调用 run.py 并传递所有输入参数
.\py\python.exe main.py %*
main.py
import sys
import getopt
import uvicorn
import pathlib
from multiprocessing import freeze_support
if __name__ == "__main__":
freeze_support()
uvicorn.run('app:app', host="0.0.0.0", port=8000, reload=True, workers=1)
app.py
from fastapi import FastAPI
app = FastAPI()
@app.post("/xxx")
# 以下略
运行run.bat
报错:ERROR: Error loading ASGI app. Could not import module "app".
我认为还是路径的问题,但我没有找到解决方案,
相似问题在 https://stackoverflow.com/questions/60819376/fastapi-throws-an-error-error-loading-asgi-app-could-not-import-module-api
但和我这不太一样
请问这该怎么办?
谢谢
安装了uvicorn后,py目录下面的Scripts目录下面有一个uvicorn.exe ,命令可以改成:uvicorn.exe app:app --reload --host 0.0.0.0 --port 8000 ,这里直接执行uvicorn命令是没问题的。
如果要在 main.py 里面通过 uvicron.run() 启动 app,在 main.py 里面加上这两句