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

如何在requirements.txt中正确配置txtai依赖完成Heroku部署

Heroku部署Streamlit+txtai依赖配置方案

报错核心原因

你遇到的两类报错对应两个明确问题:

  1. 依赖声明格式错误:重复声明txtai、直接引用git仓库带扩展标记的写法不符合pip解析规则,会直接触发安装流程中断
  2. Slug体积超限:全量安装txtai[pipeline]会默认拉入完整PyTorch、全量机器学习依赖,加上git拉取仓库时带入的源码、测试、文档文件、pip构建缓存,很容易突破Heroku 500M的slug大小上限;哪怕移除pipeline扩展,git源安装时拉取的全量仓库历史、开发态构建依赖也会把slug撑到1G以上,这也是你删了pipeline依赖还是报体积超限的直接原因。

正确配置步骤

1. 重写requirements.txt,规避冗余和重型依赖

  • 不要直接引用txtai的git仓库地址作为依赖源:git安装会下载全量仓库文件(含测试用例、示例、文档,占额外空间),且扩展依赖解析容易出兼容问题,直接使用PyPI发布的稳定版即可
  • 不要直接安装txtai[pipeline]全量扩展:这个扩展会一次性安装所有NLP、CV、音频方向的依赖,单是完整版PyTorch就接近700M,装完必然超容量。只安装你代码实际用到的依赖组件即可
  • 去掉重复的txtai声明,同一依赖不要在requirements.txt里写两行
    参考常规文本搜索/嵌入场景的最小可用配置(总依赖体积约300M):
streamlit==1.10.0
nltk==3.7
txtai==6.0.0 # 选择和你本地开发版本一致的稳定版即可
onnxruntime==1.15.1 # 用轻量ONNX运行时替代重型PyTorch做推理,体积小90%
sentence-transformers==2.2.2 # 需要句向量功能时再加
Pillow==9.5.0
beautifulsoup4==4.12.2

如果你确实需要用到依赖PyTorch的pipeline功能,不要装完整版PyTorch,在requirements.txt最顶部加CPU-only版本源,安装轻量CPU版PyTorch,比全量版小2/3:

--extra-index-url https://download.pytorch.org/whl/cpu
torch==2.0.1+cpu
torchvision==0.15.2+cpu

2. 配置.slugignore压缩slug体积

在项目根目录新建.slugignore文件,把不需要打包进运行环境的文件全部排除,进一步压缩体积:

.git
__pycache__
*.pyc
tests/
examples/
docs/
nltk_data/
.cache/
venv/
.env
*.md
*.ipynb

3. 调整Heroku构建配置

  • 在Heroku应用的环境变量配置里新增PIP_NO_CACHE_DIR = 1,禁止pip把安装缓存打进slug,能省出50-100M空间
  • NLTK只下载你实际用到的语料包,不要执行全量nltk数据下载,比如只需要分词功能就只下载punkt语料,全量NLTK数据超过300M,很容易撑爆容量
  • 本地提前验证体积:新建空虚拟环境安装所有依赖,查看site-packages总大小,控制在450M以内再部署,留足系统依赖和项目代码的空间

避坑提醒

不要用git+https://github.com/neuml/txtai#egg=txtai[xxx]这种格式声明依赖,Heroku的构建环境对git源带扩展标记的解析存在兼容问题,是你一开始遇到安装报错的直接原因,生产环境部署一律用PyPI发布的正式版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:16