You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Azure Function应用自定义包ModuleNotFoundError问题求助

解决Python Azure Function自定义包ModuleNotFoundError问题

问题背景

开发Python Azure Function应用时引入了自定义包,按官方文档在CI/CD流水线中构建并安装所有依赖,打包成zip部署到Azure后,运行时触发以下错误:

Result: Failure Exception: ModuleNotFoundError: No module named '{custom package name}'. Cannot find module. Please check the requirements.txt file for the missing module.

检查构建产物发现,官方文档要求的包元数据目录格式为<package-name>-<version>-dist-info,但实际生成的是<package-name>-<version>.dist-info。尝试配置BUILD_FLAGS=UseExpressBuild、PYTHON_ISOLATE_WORKER_DEPENDENCIES=0、SCM_DO_BUILD_DURING_DEPLOYMENT=true、ENABLE_ORYX_BUILD=true这些应用参数后,问题仍未解决。

解决方案

1. 修正自定义包的打包格式

Azure Functions Python运行环境对包的元数据目录结构有明确要求,-dist-info是正确的后缀格式(而非.dist-info)。调整打包流程:

  • 确保打包用的setuptools版本不低于60.0.0,新版本会生成符合要求的-dist-info目录结构,可在setup.py或pyproject.toml中指定依赖版本。
  • 优先用python setup.py sdist生成源码包进行安装,若使用wheel包,需确认其结构符合Azure的要求(避免生成.dist-info)。

2. 调整CI/CD的依赖安装路径

在CI/CD流水线中安装自定义包时,直接指定安装到Azure Functions识别的依赖目录:

pip install ./path/to/your-custom-package.tar.gz -t ./python/lib/site-packages

这样安装后的包文件和元数据目录会被部署时正确识别,避免路径问题导致的模块找不到。

3. 优化部署配置参数

之前的参数组合可能存在冲突,调整为以下配置:

  • 设置SCM_DO_BUILD_DURING_DEPLOYMENT=false:既然已经在CI/CD中完成构建,关闭部署时的自动构建,避免重复构建破坏依赖结构。
  • 保留PYTHON_ISOLATE_WORKER_DEPENDENCIES=0:确保函数工作进程能访问安装的依赖包。
  • 移除BUILD_FLAGS=UseExpressBuild和ENABLE_ORYX_BUILD=true:Express Build和Oryx自动构建在自定义包场景下可能无法正确处理本地依赖,手动构建更可靠。

4. 验证构建产物

部署前检查zip包内的结构:

  • 确认自定义包的代码文件在python/lib/site-packages/<package-name>目录下。
  • 确认对应的<package-name>-<version>-dist-info目录存在于同一层级,格式完全符合要求。

内容的提问来源于stack exchange,提问作者Milad Karimifard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 23:47:35