部署Azure函数应用时依赖无法从VS Code同步至Azure
Python Azure函数部署未识别requirements.txt、依赖未安装的排查方案
部署日志出现Could not find setup.py or requirements.txt; Not running pip install.的核心原因是Oryx构建阶段未在指定路径扫描到有效的依赖声明文件,即使你本地文件格式正确,也大概率是以下几类问题导致:
- 文件放置路径错误:Azure Python函数的构建逻辑强制要求
requirements.txt必须放在项目根目录,即和host.json、local.settings.json、函数触发器文件夹(如HttpTrigger、TimerTrigger目录)同级。如果误将文件放在触发器子目录、虚拟环境目录、项目外层文件夹,构建扫描阶段会直接跳过依赖安装。 - 文件命名/编码不符合规范:
- 检查文件是否有多余后缀:Windows默认开启「隐藏已知文件扩展名」时,很容易误存为
requirements.txt.txt,这类命名不会被构建脚本识别 - 检查文件名拼写和大小写:Azure函数生产环境默认是Linux系统,大小写敏感,不能命名为
Requirements.txt、requirement.txt(漏写末尾s) - 检查文件编码:必须使用UTF-8无BOM格式存储,若用GBK、UTF-8 BOM格式保存,构建脚本读取内容失败也会判定为无效依赖文件
- 检查文件是否有多余后缀:Windows默认开启「隐藏已知文件扩展名」时,很容易误存为
- 部署忽略规则配置错误:检查项目根目录下的
.funcignore、.gitignore文件,确认没有将requirements.txt加入忽略列表。如果被规则匹配,部署时该文件根本不会被上传到Azure构建环境,自然无法被扫描到。 - 部署构建开关未开启:如果使用手动Zip部署、CI/CD流水线部署,需要在函数应用的配置项中添加应用设置
SCM_DO_BUILD_DURING_DEPLOYMENT=true,若该值为false,部署流程会直接跳过所有构建步骤(包括pip依赖安装),即使文件上传正确也不会执行安装逻辑。
快速验证与修复步骤
- 登录Azure门户进入对应函数应用,打开左侧菜单的「高级工具(Kudu)」,进入调试控制台后导航到
/site/wwwroot目录,直接查看该目录下是否存在你编写的requirements.txt,打开核对内容是否和本地一致。如果该目录下找不到文件,直接修正路径/忽略规则后重新部署即可。 - 如果文件已存在于wwwroot根目录,可直接在Kudu控制台执行
pip install -r requirements.txt手动安装依赖,安装完成后重启函数应用即可临时解决ModuleNotFoundError运行报错。 - 核对应用设置中的
SCM_DO_BUILD_DURING_DEPLOYMENT值为true后,重新触发一次完整部署,观察构建日志是否出现pip下载安装依赖的输出。
注意:不要直接上传本地虚拟环境的site-packages目录到生产环境,本地Windows/Mac环境的Python包和Azure Linux运行环境的系统依赖、ABI版本不匹配,会引发更多兼容性问题,通过官方构建流程安装依赖是唯一稳定方案。
内容的提问来源于stack exchange,提问作者DBAutomized
相关产品推荐
相关产品推荐

