Azure DevOps流水线部署Azure Functions遇ModuleNotFoundError求助
排查Azure DevOps流水线部署Azure Functions时的
ModuleNotFoundError: holidays问题 1. 验证流水线依赖安装的路径与文件存在性
- 检查流水线中执行
pip install -r requirements.txt的步骤,确认命令指向的是正确的文件路径。如果近期调整过代码目录结构,流水线里的相对路径可能失效,导致pip无法读取到requirements.txt。 - 可以在安装依赖前添加
ls(Linux代理)或dir(Windows代理)命令,输出当前工作目录的文件列表,直接验证requirements.txt是否存在。
2. 查看流水线依赖安装日志
- 打开Azure DevOps流水线的构建日志,定位到依赖安装步骤,确认
holidays==0.32是否被成功安装:- 如果日志中完全没有该包的安装记录,说明pip未正确读取requirements.txt;
- 如果存在安装失败提示(如网络超时、版本不兼容),针对性解决问题,比如添加国内PyPI源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple。
3. 确认流水线的Python版本环境
- 本地使用Python 3.9,但流水线代理的Python版本可能被意外修改(比如代理自动更新、其他任务篡改环境变量)。检查流水线中
UsePythonVersion任务的配置,确保指定版本为3.9。 - 在依赖安装步骤前添加
python --version命令,输出当前使用的Python版本,确保与本地开发环境一致。
4. 检查部署包的依赖完整性
- 下载流水线生成的部署包(.zip文件),解压后查看
site-packages目录,确认holidays文件夹是否存在。如果不存在,说明依赖未被正确打包进部署包:- 确保流水线使用
func azure functionapp publish命令部署,或Azure DevOps的Azure Functions部署任务勾选了包含构建输出的相关选项,保证依赖被纳入部署包。
- 确保流水线使用
5. 排查requirements.txt的格式问题
- 若requirements.txt存在编码异常(如UTF-8带BOM)、多余空格或换行,可能导致pip无法解析。直接将本地可正常运行的requirements.txt内容复制替换到Azure Repo的对应文件,避免格式错误。
6. 清理缓存避免残留影响
- 在流水线的依赖安装命令中添加
--no-cache-dir参数,强制重新安装所有依赖:pip install -r requirements.txt --no-cache-dir,避免旧缓存干扰。 - 登录Azure Portal,进入函数应用的平台设置 -> 常规设置,点击重启应用,清理运行环境的残留缓存。
内容的提问来源于stack exchange,提问作者BlackMiracle
相关产品推荐
相关产品推荐

