You need to enable JavaScript to run this app. 部署Flask应用至Heroku时报错:No module named 'importlib.util'
优惠活动
大模型
产品
解决方案
定价
更多

部署Flask应用至Heroku时报错:No module named 'importlib.util'

报错核心原因
  • requirements.txt中的importlib==1.0.4条目是直接诱因。
  • importlib是Python 3.1+内置标准库,无需额外安装。该第三方包是Python 2时代的兼容backport,已停止多年维护,本身未包含importlib.util子模块(该子模块为Python 3.4+内置新增功能)。
  • 安装该包后会覆盖系统内置的importlib模块,而Heroku的heroku/python构建包默认使用Python 3.7+环境,原本内置的importlib.util模块被旧包覆盖后,代码调用时就会触发ModuleNotFoundError。
修复操作步骤
  1. 编辑项目根目录下的requirements.txt,删除importlib==1.0.4整条记录。
  2. 清理冗余无效依赖:
    • 删除sklearn==0.0条目:该包为空占位包,项目已安装正式的scikit-learn==0.24.1,该条目无实际作用,还可能引发依赖冲突。
    • 若代码中未显式引用pprintpp的相关功能,可同步删除pprintpp==0.4.0条目。
  3. 本地执行pip install -r requirements.txt验证依赖安装无报错。
  4. 重新提交代码触发Heroku自动部署流程。
长期优化建议
  • 不要直接将本地执行pip freeze生成的全量依赖清单上传至生产环境,该清单会包含本地全局环境的所有包版本,极易引入无关冗余依赖。建议手动维护requirements.txt,仅列出项目实际import用到的第三方包。
  • 若需使用importlib相关功能,直接调用Python内置模块即可,无需额外安装第三方包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 22:24:05