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

通过GitHub Actions部署Python版Azure Function App时遭遇ModuleNotFoundError: No module named 'azure.storage'错误

通过GitHub Actions部署Python版Azure Function App时遭遇ModuleNotFoundError: No module named 'azure.storage'错误

我完全能理解你的困惑——同样的代码用VS Code部署一切正常,换成GitHub Actions就出了依赖找不到的问题,这大概率是两种部署方式的依赖处理逻辑不一样导致的。

问题根源

你当前的GitHub Actions流程里,虽然在虚拟环境中安装了依赖,但手动用zip命令打包时,并没有把安装好的依赖包含到部署包中(还特意排除了venv目录)。而VS Code的Azure Functions部署工具会自动处理依赖的打包(或者触发Azure端的依赖安装),所以能正常运行。

Azure Functions的Python运行时会从项目根目录下的.python_packages目录加载依赖,你的流程里既没有生成这个目录,也没把依赖打包进去,导致函数运行时找不到azure.storage模块(这个模块是azure-storage-blob包的核心组成部分)。

解决方案:调整GitHub Actions流程,正确打包依赖

这里有两种可靠的修改方式,选其中一种就行:

方式1:使用Azure Functions Core Tools的func pack命令打包

这个是官方推荐的打包方式,会自动处理依赖和项目结构,避免手动打包的遗漏:

  1. 在build job中添加安装Azure Functions Core Tools的步骤
  2. 用func pack替代手动zip操作

修改后的build job关键步骤如下:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read

    steps:
      # 前面的checkout、setup-python、虚拟环境步骤保持不变
      
      - name: Install Azure Functions Core Tools
        run: |
          curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
          sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
          sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs)-prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'
          sudo apt update
          sudo apt install azure-functions-core-tools-4

      - name: Install dependencies and pack project
        run: |
          pip install -r requirements.txt
          func pack --python --output release.zip
      
      - name: Upload artifact for deployment job
        uses: actions/upload-artifact@v4
        with:
          name: python-app
          path: release.zip

方式2:手动将依赖安装到.python_packages目录后打包

如果不想安装Core Tools,可以直接把依赖安装到Azure Functions识别的目录,再一起打包:
修改Install dependencies步骤,将依赖安装到项目根目录的.python_packages下:

- name: Install dependencies
  run: pip install -r requirements.txt --target .python_packages/lib/site-packages

然后修改Zip artifact for deployment步骤,确保包含这个目录(如果需要排除venv,单独指定即可):

- name: Zip artifact for deployment
  run: zip release.zip ./* -r -x 'venv/*'

额外验证点

  • 确认你的requirements.txt里的azure-storage-blob版本兼容Python 3.11,不过从VS Code部署正常来看,这个应该没问题。
  • 部署完成后,可以在Azure Portal的Function App里,进入高级工具(Kudu),查看site/wwwroot目录下是否有.python_packages文件夹,以及里面是否包含azure/storage相关文件,以此验证依赖是否正确部署。

备注:内容来源于stack exchange,提问作者Mart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 20:08:01