如何阻止Azure DevOps部署Azure Function时自动执行pip install
阻止Azure Function部署时自动执行pip install的方法
你已将依赖包打包进部署压缩包,但部署仍会触发pip install,原因是Azure Function默认部署流程会自动执行构建步骤。要阻止该行为,只需添加应用设置并调整流水线配置:
解决方案步骤
添加应用设置禁用自动构建
设置SCM_DO_BUILD_DURING_DEPLOYMENT为false即可跳过部署阶段的自动构建(包括pip install),有两种设置方式:Azure门户手动配置:进入Function App的「配置」→「应用程序设置」,新增键为
SCM_DO_BUILD_DURING_DEPLOYMENT、值为false的设置项。流水线自动配置:修改
AzureRmWebAppDeployment@4任务,添加appSettings参数,部署时自动配置该设置:- task: AzureRmWebAppDeployment@4 displayName: Azure Function App Deploy inputs: appType: 'functionAppLinux' deployToSlotOrASE: true DeploymentType: 'zipDeploy' packageForLinux: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' runtimeStack: 'PYTHON|3.11' appSettings: '-SCM_DO_BUILD_DURING_DEPLOYMENT false'
确认压缩包结构合规
确保.python_packages/lib/site-packages目录位于压缩包根目录下,Azure Function运行时会直接加载该目录内的依赖,无需重新安装。
修改后的完整流水线配置
trigger: - main variables: workingDirectory: '$(System.DefaultWorkingDirectory)' steps: - task: UsePythonVersion@0 displayName: 'Use Python 3.11' inputs: versionSpec: 3.11 - bash: | pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt workingDirectory: $(workingDirectory) displayName: 'Install application dependencies' - task: ArchiveFiles@2 displayName: 'Generate ZIP' inputs: rootFolderOrFile: '$(workingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip - publish: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip artifact: drop - task: AzureRmWebAppDeployment@4 displayName: Azure Function App Deploy inputs: appType: 'functionAppLinux' deployToSlotOrASE: true DeploymentType: 'zipDeploy' packageForLinux: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip' runtimeStack: 'PYTHON|3.11' appSettings: '-SCM_DO_BUILD_DURING_DEPLOYMENT false'
内容的提问来源于stack exchange,提问作者Auryn
相关产品推荐
相关产品推荐

