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

Git Push Heroku Master失败:无法找到指定版本的mkl-service与mkl-random依赖包求助

解决Heroku部署Python项目的依赖版本匹配问题

嘿,我碰到过类似的情况——Heroku的构建环境和本地虚拟环境的依赖源有时候会有差异,导致本地能用的旧版本包在Heroku上找不到。你的问题很明确:PyPI上已经没有mkl-service==2.3.0和mkl-random==1.2.1的公开版本了,而Heroku只能从PyPI拉取包,所以才会报错。下面给你几个靠谱的解决办法:

1. 直接升级到Heroku可用的版本

从错误信息看,Heroku那边能找到mkl-service==2.4.0,那咱们先修改requirements.txt:

  • 把mkl-service==2.3.0替换成mkl-service==2.4.0
  • 对于mkl-random==1.2.1,你可以本地先升级试试:
    pip install --upgrade mkl-random
    
    然后用pip freeze | grep mkl-random拿到最新的可用版本号,再更新到requirements.txt里。

改完之后,先在本地虚拟环境验证没问题:

pip install -r requirements.txt

确认项目能正常运行后,提交修改再推送:

git add requirements.txt
git commit -m "Update mkl dependencies to fix Heroku deployment"
git push heroku master

2. 用宽松的版本约束避免锁定

如果你的项目不需要严格依赖某个旧版本,不如把版本号改成范围,让pip自动选合适的版本:

  • 把mkl-service==2.3.0改成mkl-service>=2.3.0
  • mkl-random==1.2.1改成mkl-random>=1.2.1

这样Heroku构建时会自动拉取当前PyPI上可用的最新兼容版本,不会因为版本锁定卡壳。

3. 排查依赖的安装来源

有时候本地的包可能是从私有源或者本地文件安装的,不是PyPI上的公开版本。你可以本地执行:

pip show mkl-service

看一下Location和Home-page字段,如果不是PyPI的地址,那Heroku肯定拉不到。这种情况优先用前两种方案升级到公开可用版本。

小提醒

别直接用pip freeze生成完整的requirements.txt,本地虚拟环境里可能会带很多系统特定的依赖(比如和你的本地硬件相关的mkl包版本),最好手动维护这个文件,只列项目必需的依赖和合理的版本范围,这样部署到Heroku这类公共环境时更不容易出问题。

内容的提问来源于stack exchange,提问作者Debasis Sil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 17:57:30