Heroku部署Python应用报No module named 'hjson'错误如何排查
报错信息可用性判断
你提供的堆栈信息已经足够定位问题,不需要额外补充日志即可完成排查。这个ModuleNotFoundError: No module named 'hjson'是Python应用在Heroku部署时非常典型的依赖缺失问题,根因明确。
问题根因
Heroku部署Python应用时,不会同步你本地开发环境安装的第三方库,只会在构建阶段根据项目根目录下的依赖声明文件自动安装依赖。你本地安装了hjson但没有把它写入依赖声明文件,导致线上运行环境里根本没有安装这个库,导入时直接触发报错。
修复步骤
- 先确认你项目用的Python依赖管理方式:绝大多数场景Heroku默认识别根目录下的
requirements.txt作为依赖清单;如果用Pipenv则识别Pipfile+Pipfile.lock;用Poetry则识别pyproject.toml+poetry.lock。 - 把hjson写入对应依赖清单:
- 用
requirements.txt的场景:先在本地终端执行pip show hjson,拿到你本地安装的hjson版本号,在requirements.txt里新增一行hjson==<对应版本号>即可,比如本地版本是3.1.0就写hjson==3.1.0。 - 用Pipenv/Poetry的场景:不要手动修改锁文件,在本地项目目录执行对应依赖添加命令自动更新清单:Pipenv执行
pipenv install hjson,Poetry执行poetry add hjson。
- 用
- 排查常见配置疏漏:确认依赖文件放在项目根目录、文件名没有拼写错误、git提交时没有把依赖文件加入忽略列表、确实把修改后的依赖文件推送到了Heroku对应的远程分支。
- 重新推送代码触发Heroku构建,查看构建日志,确认日志中出现
Successfully installed hjson-<版本号>的安装记录后,应用启动就不会再触发该报错。 - 特殊情况排查:如果按上述步骤操作后依然报相同错误,执行
heroku buildpacks检查应用的构建包,确认已添加python官方构建包,构建包配置错误时不会触发Python依赖安装流程。
内容的提问来源于stack exchange,提问作者MouseWarrior
相关产品推荐
相关产品推荐

