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

如何在Heroku自动安装requirements.txt包前执行指定pip安装?

解决Heroku Django项目SAML认证依赖安装顺序问题

核心问题分析

xmlsec wheel构建失败的本质是缺少系统级依赖库,同时pip默认的安装顺序无法满足python3-saml→强制重装lxml→其余依赖的要求,且release阶段没有编译环境,不适合执行依赖安装。

可行解决方案

方案1:Apt Buildpack + 自定义安装脚本(推荐)

  1. 添加apt buildpack以安装xmlsec所需系统依赖
    heroku buildpacks:add --index 1 heroku-community/apt
    
  2. 在项目根目录创建Aptfile,写入:
    libxml2-dev
    libxmlsec1-dev
    libxmlsec1-openssl
    
  3. 创建自定义安装脚本install_deps.sh:
    #!/bin/bash
    set -e
    pip install python3-saml
    pip install --force-reinstall --use-pep517 lxml
    pip install -r requirements.txt
    
  4. 赋予脚本执行权限:
    chmod +x install_deps.sh
    
  5. 配置Heroku使用该脚本替代默认pip安装命令:
    heroku config:set PYTHON_BUILD_PACKAGE_INSTALL_CMD="./install_deps.sh"
    

方案2:调整requirements.txt实现指定顺序

修改requirements.txt,按要求指定安装顺序和选项(需配合apt buildpack先安装系统依赖):

python3-saml
--force-reinstall --use-pep517 lxml
# 以下是你的其他项目依赖
django==4.2.5
# ... 其他包

注意事项

  • 必须先安装系统依赖,否则xmlsec编译必然失败;
  • 所有依赖安装步骤必须放在构建阶段,release阶段无编译环境,无法完成wheel构建;
  • 脚本中set -e确保任何步骤失败立即终止,便于排查问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:54