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

Azure DevOps部署Python函数时requirements.txt被忽略的问题及优化咨询

关于Azure Functions Python部署依赖问题的解答

1. 手动安装依赖的方法是否合规?

完全合规。这种方式本质是绕过Oryx自动构建的异常,手动完成依赖安装并纳入部署包,属于官方认可的自定义构建场景,是被允许的替代方案。

2. 该步骤的实际作用是什么?

这个步骤并没有安装到DevOps代理的全局Python环境,而是通过--target参数指定将依赖安装到项目目录下的.python_packages/lib/site-packages文件夹中。后续部署任务会将整个项目目录(包括新生成的.python_packages目录)打包上传到Function App,因此最终部署包中会包含所有依赖,解决了依赖缺失的问题。

3. 更优解决方案

排查Oryx自动构建失效的原因

先定位官方自动构建未生效的核心问题,常见诱因包括:

  • 项目结构不符合要求:Python函数项目的requirements.txt必须放在根目录,且每个函数的子文件夹要与requirements.txt同级,不能嵌套多层子目录。
  • WEBSITE_RUN_FROM_PACKAGE设置冲突:如果该应用设置的值为1或指向已有Zip包,Oryx会跳过构建(RUN_FROM_PACKAGE模式默认直接部署预打包内容)。可临时将该值设为空或0触发构建,完成后Azure会自动重置为生成的包URL。
  • 环境变量未正确配置:确认SCM_DO_BUILD_DURING_DEPLOYMENT和ENABLE_ORYX_BUILD已添加到Function App的应用设置中(Azure门户→配置→应用设置),而非仅在YAML管道内定义。

使用官方Azure Functions部署任务

推荐使用AzureFunctionApp@1任务,它会自动处理Python依赖的安装、构建和打包,无需手动编写pip命令,更符合最佳实践:

steps:
  - task: UsePythonVersion@0
    displayName: "使用Python 3.10"
    inputs:
      versionSpec: 3.10
  - task: AzureFunctionApp@1
    displayName: "部署Azure函数应用"
    inputs:
      azureSubscription: "<你的Azure订阅名称>"
      appType: functionApp
      appName: "<你的Function App名称>"
      package: "$(System.DefaultWorkingDirectory)/**/*.zip"
      runtimeStack: "PYTHON|3.10"

该任务会自动调用Oryx在DevOps代理上完成构建,生成包含.python_packages的标准部署包,避免手动操作可能带来的路径、版本匹配问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:00:01