如何在Jupyter中运行FastAPI应用?解决.ipynb文件运行报错问题
保留.ipynb文件运行FastAPI服务的解决办法
问题描述
编写了以下FastAPI示例代码:
from fastapi import FastAPI app = FastAPI() @app.get("/") async def root(): return {"message": "Hello World"}
将代码保存为main.ipynb文件后,执行命令uvicorn main:app --reload时出现错误:
(venv) PS C:\Users\xxx\xxxx> uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [21304] using WatchFiles ERROR: Error loading import module "main".INFO: Stopping reloader process [21304]
报错原因是Uvicorn无法直接加载.ipynb格式文件,需在保留.ipynb文件的前提下解决该问题。
可行解决方案
1. 手动导出.ipynb为.py文件
- 打开
main.ipynb,通过Jupyter Notebook的**文件 > 下载为 > Python (.py)**导出对应的main.py文件。 - 后续修改
main.ipynb后,重新导出覆盖main.py,再执行uvicorn main:app --reload即可正常启动服务。
2. 用nbconvert命令行转换
- 在终端执行以下命令,将
.ipynb文件转为.py格式:jupyter nbconvert --to python main.ipynb - 转换完成后运行
uvicorn main:app --reload,后续修改.ipynb后重新执行转换命令即可同步代码。
3. 在.ipynb中直接启动Uvicorn
- 在
main.ipynb的最后一个单元格添加以下代码:import uvicorn if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=8000) - 运行该单元格即可启动FastAPI服务;修改代码后需重新运行单元格更新服务(此方法无自动重载功能,需手动重启)。
4. 自动同步.ipynb与.py文件
- 使用
nbstripout等工具,配置自动脚本或Git钩子,在修改.ipynb时自动生成同步的.py文件,确保Uvicorn能读取到最新代码。
内容的提问来源于stack exchange,提问作者bravopapa
相关产品推荐
相关产品推荐

