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

如何在Azure App Service应用中安装WeasyPrint所需依赖?

问题原因
  • GitHub Actions的构建步骤运行在GitHub专属的构建服务器上,安装的系统依赖仅作用于构建环境,不会同步到Azure App Service的运行容器中,所以构建日志显示成功不代表运行环境有对应的依赖。
  • Azure App Service Linux 实例基于容器化技术实现,通过SSH手动安装的依赖仅在当前容器实例生命周期内有效,一旦实例重启、缩放或平台触发故障迁移,手动安装的内容会全部丢失。
  • 部分情况下系统依赖安装完成后,Python运行环境的共享库搜索路径未包含系统库默认路径,也会导致依赖识别失败。
可行解决方案

方案1:使用自定义启动脚本(快速生效,适合测试/轻量应用)

  1. 在项目根目录新建startup.sh文件,写入以下内容:
#!/bin/bash
# 更新包索引并安装WeasyPrint所需系统依赖
apt update
apt install -y build-essential python3-dev python3-pip python3-setuptools python3-wheel python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-info
# 添加系统库路径到环境变量,解决找不到库的问题
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu
# 替换为你实际的应用启动命令,比如gunicorn启动flask/django应用
gunicorn --bind=0.0.0.0:8000 your_app.wsgi:application
  1. 将startup.sh提交到代码仓库。
  2. 登录Azure门户,进入对应App Service的「配置」→「常规设置」页面,在「启动命令」输入框填入bash startup.sh,保存配置后应用会自动重启生效。

方案2:使用自定义Docker镜像(更稳定,适合生产环境)

如果不想每次应用启动都重复安装依赖,可以构建包含所有依赖的自定义Docker镜像部署,步骤如下:

  1. 在项目根目录新建Dockerfile,示例内容:
# 基于Azure官方Python镜像,可根据需求替换Python版本
FROM mcr.microsoft.com/appsvc/python:3.9

# 安装系统依赖
RUN apt update && apt install -y --no-install-recommends \
    build-essential \
    python3-dev \
    python3-pip \
    python3-setuptools \
    python3-wheel \
    python3-cffi \
    libcairo2 \
    libpango-1.0-0 \
    libpangocairo-1.0-0 \
    libgdk-pixbuf2.0-0 \
    libffi-dev \
    shared-mime-info \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /home/site/wwwroot

# 复制依赖文件并安装Python依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 8000

# 启动命令,替换为实际的应用入口
CMD ["gunicorn", "--bind=0.0.0.0:8000", "your_app.wsgi:application"]
  1. 将镜像构建并推送到容器镜像仓库(比如Azure Container Registry、Docker Hub)。
  2. 将App Service的部署源修改为对应的容器镜像即可。

内容的提问来源于stack exchange,提问作者David W. Green

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:24:01