部署Python Flask应用至Azure App Service时遇spacy模块缺失错误
解决Azure App Service部署Flask应用时的ModuleNotFoundError: No module named 'spacy'问题
核心排查与修复步骤
验证requirements.txt的正确性
- 确保是在激活本地虚拟环境后执行
pip freeze > requirements.txt,而非全局环境。 - 打开requirements.txt,确认存在
spacy条目(例如spacy==3.7.1),版本需与本地运行环境完全一致。 - 若使用
pipreqs生成依赖文件,可能遗漏spacy,需手动添加或改用pip freeze。
- 确保是在激活本地虚拟环境后执行
对齐本地与Azure的Python版本
- 登录Azure门户,进入App Service的「配置」>「常规设置」,确认Python版本为3.9(与本地虚拟环境版本完全匹配,包括小版本如3.9.10)。
- 若使用
az webapp up部署,可能覆盖门户设置,可通过命令强制指定版本:az webapp config set --name <appservicename> --resource-group <resourcegroupname> --python-version 3.9
处理Spacy预训练模型的特殊需求
若代码依赖Spacy预训练模型(如en_core_web_sm):- 不要直接上传本地下载的模型文件夹,需在requirements.txt中添加模型的pip安装链接,例如:
spacy==3.7.1 https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.7.1/en_core_web_sm-3.7.1.tar.gz - 或在Azure门户的「配置」>「应用程序设置」中添加启动命令(需确保gunicorn已在requirements中):
gunicorn --bind=0.0.0.0 --timeout 600 app:app && python -m spacy download en_core_web_sm
- 不要直接上传本地下载的模型文件夹,需在requirements.txt中添加模型的pip安装链接,例如:
检查部署日志定位问题
- 进入Azure门户的App Service >「部署中心」>「日志」,查看部署过程中的pip安装日志。
- 若日志显示spacy安装失败,需排查依赖冲突(例如某些包与spacy版本不兼容),调整requirements.txt中的版本号后重新部署。
强制清除缓存并重新构建
- 在Azure门户的「部署中心」>「高级选项」中点击「重新部署」。
- 或执行命令:
az webapp deployment source sync --name <appservicename> --resource-group <resourcegroupname>
内容的提问来源于stack exchange,提问作者tushar arora
相关产品推荐
相关产品推荐

