PAYATHON 2026

运行 Django migrate 时找不到 django_heroku 模块怎么办?

数据小许

结论

先确认运行 python3 manage.py migrate 的 Python 环境能否找到报错中提到的模块。pip3 list 显示某个包已安装,并不代表它安装在这个 python3 使用的环境中。psycopg-binary 与数据库驱动有关,无法补上缺失的 django_heroku 或 django_on_heroku 模块。

1. 确认 Python 和 pip 指向同一环境

在项目目录中运行:

python3 -c "import sys; print(sys.executable)"
python3 -m pip --version
python3 -m pip show django-heroku django-on-heroku

检查 sys.executable、pip --version 输出的路径,以及 pip show 显示的安装位置。如果项目使用虚拟环境,先激活它,再运行这些命令。之后也用同一个解释器执行迁移:

python3 manage.py migrate

如果 python3 -m pip show 找不到相应的包,但 pip3 list 能看到,通常是因为两个 pip 命令对应的 Python 环境不同。请按项目的安装说明,在运行迁移的环境中安装所需依赖。

2. 检查当前环境能否解析模块

可以用 Python 查看模块搜索结果和解释器路径:

python3 -c "import importlib.util, sys; print(sys.executable); print('django_heroku:', importlib.util.find_spec('django_heroku')); print('django_on_heroku:', importlib.util.find_spec('django_on_heroku'))"

如果对应模块显示为 None,说明当前解释器无法解析这个导入名。检查 pip show 的结果是否与当前虚拟环境一致,并确认安装的包能提供项目实际导入的模块。

3. 核对项目的导入语句和依赖清单

错误中提到的是 Python 导入名,包管理器中的发行包名可能写法不同。不要只凭名称相似就认定安装某个包后能使用另一个导入名。查看完整 traceback 中最先出现项目路径的那一行,确认代码导入的是 django_heroku 还是 django_on_heroku,再根据 PyGoat 仓库使用的方法检查对应的依赖文件和安装说明。

如果依赖文件声明了该包,可以用当前环境的 Python 安装项目依赖,例如:

python3 -m pip install -r requirements.txt

只有项目中确实存在 requirements.txt 时才运行这条命令。如果仓库使用其他依赖文件或安装方式,请按项目说明操作。也可以检查项目设置文件中的相关 import,确认代码与依赖声明一致。

4. 查看完整 traceback,判断报错阶段

目前只提供了错误摘要,没有附上截图中的完整 traceback,因此无法确定具体是哪个文件触发了导入错误。检查 traceback 最后一行的模块名,以及前面的文件路径和行号,据此判断错误来自项目设置、某个依赖,还是实际运行的解释器环境。

如果环境和导入名都核对无误,但错误仍然存在,可以激活虚拟环境,重新安装项目声明的依赖后再执行迁移。先不要单独修改数据库驱动或随意更换包。

备注:内容仅供参考。