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

Azure DevOps Pipeline部署Python函数应用时Playwright安装失败求助

部署含Playwright的Python Azure Function App V2至Azure DevOps Pipeline的解决方案

问题描述

尝试通过Azure DevOps Pipeline部署Python Azure Function App V2,VS Code部署正常且已添加所需的2个应用设置,但Pipeline部署时始终无法正确安装Playwright,报错:

Looks like Playwright was just installed or updated. Please run the following command to download new browsers: playwright install <3 Playwright Team.

尝试添加POST_BUILD_COMMAND应用设置仅在VS Code部署时生效,Pipeline中无效。当前使用的YAML配置如下:

pool:
  vmImage: ubuntu-latest

steps:
- task: UsePythonVersion@0
  displayName: "Set Python version to 3.10"
  inputs:
    versionSpec: '3.10'
    architecture: 'x64'

- bash: |
    if [ -f extensions.csproj ]
    then
        dotnet build extensions.csproj --output ./bin
    fi
    pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt

- bash: |
    sudo mkdir -p /home/site/wwwroot
    PLAYWRIGHT_BROWSERS_PATH=/home/site/wwwroot
    python -m pip install playwright
    PLAYWRIGHT_BROWSERS_PATH=/home/site/wwwroot /opt/hostedtoolcache/Python/3.10.13/x64/bin/python3.10 -m playwright install chromium
  displayName: 'Install Playwright'


- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
    artifactName: 'drop'

解决方案

1. 调整Pipeline YAML配置

核心问题是浏览器二进制文件未被正确打包进部署包,且环境变量未全局生效。修改后的YAML如下:

pool:
  vmImage: ubuntu-latest

steps:
- task: UsePythonVersion@0
  displayName: "Set Python version to 3.10"
  inputs:
    versionSpec: '3.10'
    architecture: 'x64'

- bash: |
    # 全局设置Playwright浏览器安装路径到依赖目录,确保能被打包
    export PLAYWRIGHT_BROWSERS_PATH="$(System.DefaultWorkingDirectory)/.python_packages/lib/site-packages/playwright/browsers"
    # 构建扩展项目(如果存在)
    if [ -f extensions.csproj ]; then
        dotnet build extensions.csproj --output ./bin
    fi
    # 安装所有依赖(包括requirements.txt中的playwright)
    pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
    # 安装Chromium浏览器
    python -m playwright install chromium
  displayName: 'Install dependencies and Playwright browsers'

- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
    includeRootFolder: false
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
    # 确保浏览器文件被包含,排除不必要的目录
    includeFilePatterns: |
      **/*
      !.git/**/*
      !__pycache__/**/*

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip'
    artifactName: 'drop'

关键改动说明:

  • 把PLAYWRIGHT_BROWSERS_PATH设置到依赖包目录下,确保浏览器文件能被一起归档
  • 将Playwright安装合并到依赖安装步骤,避免版本不一致和路径混乱
  • 明确归档时包含所有必要文件,排除冗余目录

2. 配置Function App应用设置

部署完成后,在Azure Portal的Function App应用设置中添加/确认以下配置:

  • PLAYWRIGHT_BROWSERS_PATH: 对应运行环境路径,Linux环境填/home/site/wwwroot/.python_packages/lib/site-packages/playwright/browsers,Windows环境填D:\home\site\wwwroot\.python_packages\lib\site-packages\playwright\browsers
  • WEBSITE_RUN_FROM_PACKAGE: 设置为1,确保应用从部署包运行,避免文件权限问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:30:26