Azure Function中通过GitHub Actions部署Python版Playwright失败求助
解决GitHub Actions部署Azure Function时Python版Playwright安装失败问题
先搞定虚拟环境里的Playwright安装
既然用了Linux虚拟环境,必须先激活再执行安装命令,GitHub Actions里得把步骤写死:# 假设虚拟环境是.venv,根据你的实际路径调整 source .venv/bin/activate pip install -r requirements.txt # 安装Chromium浏览器和系统依赖,Linux下必须装系统依赖 .venv/bin/python -m playwright install chromium .venv/bin/python -m playwright install-deps chromium直接用虚拟环境里的Python来执行playwright命令,避免PATH没配置导致命令找不到的问题。
调整GitHub Actions工作流,确保浏览器文件被打包部署
Azure Function默认不会自动包含Playwright下载的浏览器二进制文件,得手动把这些文件加到部署包里,或者通过环境变量指定路径:
示例工作流片段:jobs: build-and-deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' # 匹配你的Azure Function运行时版本 - name: Install dependencies run: | python -m venv .venv source .venv/bin/activate pip install --upgrade pip pip install -r requirements.txt .venv/bin/python -m playwright install chromium .venv/bin/python -m playwright install-deps chromium - name: Copy browser files to deployment root run: | # 把浏览器目录复制到函数根目录,确保部署时能带上 cp -r .venv/lib/python3.11/site-packages/playwright/driver/browsers ./ - name: Deploy to Azure Functions uses: Azure/functions-action@v4 with: app-name: your-function-app-name slot-name: production package: . publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}同时在Azure Function的应用设置里加个环境变量
PLAYWRIGHT_BROWSERS_PATH=0,让Playwright用相对路径找浏览器。检查requirements.txt
确保里面明确写了playwright,最好指定稳定版本,比如playwright==1.40.0,避免版本兼容坑。部署后验证
部署完去Azure门户的函数控制台跑个测试命令,确认浏览器能启动:cd site/wwwroot source .python_packages/bin/activate python -c "from playwright.sync_api import sync_playwright; with sync_playwright() as p: browser = p.chromium.launch(headless=True); print('Browser started!'); browser.close()"如果能输出
Browser started!,说明安装成功了。
内容的提问来源于stack exchange,提问作者steambun
相关产品推荐
相关产品推荐

