Azure部署FastAPI遇ModuleNotFoundError:找不到database模块
FastAPI部署Azure Web App遇ModuleNotFoundError问题
本地运行uvicorn main:app --reload完全正常,database.py和main.py明明在同一目录,但部署到Azure Web App后,日志却报错ModuleNotFoundError: No module named 'database',启动命令用的是gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app。已经翻遍Stack Overflow和YouTube的相关内容,还是没解决。
可行的排查/解决方法
- 给根目录加
__init__.py:在main.py和database.py所在的根目录创建一个空的__init__.py文件,让Python把这个目录识别成合法的包结构,Azure的Python环境对包的识别可能比本地严格。 - 调整启动命令的工作目录:Azure Web App的默认工作目录可能不是代码根目录,把启动命令改成
cd /home/site/wwwroot && gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app,先切到代码所在目录再启动服务。 - 改用相对导入:把main.py里的
import database改成from . import database,用相对导入方式确保模块能被正确找到。 - 核对Python版本:确认Azure使用的Python版本和本地开发环境一致,版本差异可能导致模块导入的行为不同,可在Azure门户的应用配置里指定Python版本。
- 检查部署后的文件:通过Azure门户的Kudu工具(高级工具里的SSH或文件管理器),确认
database.py确实被部署到了/home/site/wwwroot目录下,避免部署过程中文件遗漏。
内容的提问来源于stack exchange,提问作者DeNaamIsDaaf
相关产品推荐
相关产品推荐

