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

Azure Function App(Linux消耗计划)部署后无法导入adal模块

问题原因及解决配置遗漏点

针对你遇到的ModuleNotFoundError: No module named 'adal'问题,核心是Azure Pipelines部署时未让Oryx正确处理Python依赖安装,或部署结构不符合Oryx要求,以下是具体遗漏的配置和修复步骤:

  • 未触发Oryx的依赖构建流程
    VS Code部署时Oryx会自动检测项目根目录的requirements.txt并安装依赖,但Azure Pipelines默认上传压缩包的方式可能跳过该步骤。需在部署任务中启用Oryx构建:使用AzureFunctionApp@1任务时,添加enableoryxbuild: true参数,同时指定对应Python运行时栈(如runtimeStack: 'PYTHON|3.9'),让Oryx在部署阶段自动读取requirements.txt并安装包括adal在内的所有依赖。

  • 错误打包site-packages目录
    无需手动打包site-packages,Oryx会根据requirements.txt在Azure Linux环境下重新编译安装兼容的依赖包,本地打包的site-packages可能与云端环境不兼容,反而干扰Oryx的正常构建。正确做法是仅打包项目代码和requirements.txt,不包含site-packages。

  • 缺少正确的requirements.txt文件
    确保项目根目录存在requirements.txt,并明确列出所有依赖:

    adal>=1.2.7
    requests>=2.28.0
    # datetime、logging、json为Python内置模块,无需添加
    

    Oryx只有读取到该文件,才会自动安装对应依赖包。

  • Function App运行时配置缺失
    在Azure Portal的Function App配置中,确认FUNCTIONS_WORKER_RUNTIME已设置为python,否则Oryx不会按Python环境处理依赖安装和运行时加载。

  • 部署任务的包路径配置错误
    在Pipelines的部署任务中,package参数应指向项目代码根目录(或包含代码和requirements.txt的压缩包),而非包含site-packages的压缩包。示例配置:

    - task: AzureFunctionApp@1
      inputs:
        azureSubscription: '<你的订阅>'
        appType: functionAppLinux
        appName: '<你的Function App名称>'
        package: '$(System.DefaultWorkingDirectory)/**/*.zip' # 确保zip包仅包含代码和requirements.txt
        runtimeStack: 'PYTHON|3.9'
        enableoryxbuild: true
    

内容的提问来源于stack exchange,提问作者Wojtas.Zet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:01:02