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

部署Django应用到AWS时出现Pycairo依赖安装错误

解决AWS ElasticBeanStalk部署中Pycairo间接依赖及编译失败问题

一、定位依赖Pycairo的间接包

试试用pip的依赖分析工具找出根源:

  • 先在本地安装依赖树工具:

    pip install pipdeptree
    
  • 直接搜索Pycairo的依赖链:

    pipdeptree | grep -i pycairo
    

    如果没结果,就生成完整依赖树再查找:

    pipdeptree > dependency_tree.txt
    

    打开文件搜索pycairo,就能找到它的上层依赖包。

    从你的requirements列表来看,reportlab是最可能的候选——它生成PDF矢量图形时会依赖Pycairo;folium或gmplot也有概率,但reportlab的可能性最高。

二、解决Pycairo编译失败问题

之前在.ebextensions中添加cairo无效,大概率是系统依赖安装不完整,得把编译Pycairo需要的所有包都装上:

  1. 创建或修改.ebextensions/cairo.config文件,内容如下:

    packages:
      yum:
        cairo-devel: []
        gcc: []
        gcc-c++: []
        pkgconfig: []
        python3-devel: [] # 若使用Python2,替换为python27-devel
        libffi-devel: []
        pixman-devel: []
        freetype-devel: []
        fontconfig-devel: []
    
  2. 如果你的ElasticBeanStalk环境是Python3.7及以上,需要添加环境变量让pip找到系统库,新建.ebextensions/env.config:

    option_settings:
      aws:elasticbeanstalk:application:environment:
        PKG_CONFIG_PATH: "/usr/lib64/pkgconfig:/usr/share/pkgconfig"
    

三、备选方案:固定间接依赖版本

如果是某个依赖包的新版本才引入了Pycairo,之前的版本无此依赖,可以将该包版本固定到之前正常部署的版本。比如确认是reportlab问题的话,在requirements.txt中添加:

reportlab==3.5.59

(版本号替换为你之前成功部署时的对应版本)

四、验证步骤

  • 先在本地执行pip install -r requirements.txt,确认依赖安装正常
  • 再重新部署到ElasticBeanStalk,观察日志是否不再出现Pycairo相关错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 20:35:11