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

Heroku部署遇ModuleNotFoundError: No module named 'animals.wsgi'问题求助

解决Gunicorn找不到animals.wsgi模块的问题

从你的错误日志来看,核心问题是ModuleNotFoundError: No module named 'animals.wsgi'——Gunicorn没法定位到你的WSGI模块,这通常是项目结构、路径配置或者部署文件位置的问题,给你几个具体的排查和解决步骤:

1. 确认项目目录结构是否合规

首先要保证你的Django项目结构符合标准,animals应该是你的Django项目根包,里面必须包含wsgi.py和__init__.py(哪怕是空文件),正确的结构大概是这样:

your-project-root/
├── animals/
│   ├── __init__.py
│   ├── wsgi.py
│   ├── settings.py
│   └── urls.py
├── Procfile
├── requirements.txt
└── manage.py

如果wsgi.py不在animals目录下,或者目录名拼写错误(比如写成animal少了s),都会触发这个错误。

2. 检查Procfile的位置和命令路径

Procfile必须放在项目的根目录(和manage.py同层级),Heroku会从这个目录启动进程。如果你的animals目录不在根目录下(比如嵌套在src文件夹里),那Gunicorn的命令就得调整路径,比如:

web: gunicorn src.animals.wsgi:application --log-file - --log-level debug

3. 验证Python路径是否包含项目根

有时候Heroku的Python环境不会自动把项目根目录加入sys.path,你可以临时在wsgi.py里加几行代码排查:

import sys
import os
print("Current sys.path:", sys.path)
# 如果根目录不在里面,手动添加
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

部署后看日志里的路径输出,确认项目根目录是否在列表里。也可以直接通过Heroku设置环境变量来指定:

heroku config:set PYTHONPATH=/app

(/app是Heroku容器里的项目根目录,大部分情况是对的)

4. 本地先复现并解决问题

不要直接部署到Heroku试错,先在本地运行和Procfile里完全一样的命令:

gunicorn animals.wsgi:application --log-file - --log-level debug

如果本地也报同样的错误,那问题肯定在本地的项目结构或路径上,先在本地调试好,再推送到Heroku,能节省很多时间。

5. 检查Heroku上的实际文件结构

有时候可能是部署时文件没有正确上传,你可以通过Heroku的终端查看容器里的文件:

heroku run bash
# 进入后查看根目录文件
ls -la
# 进入animals目录看有没有wsgi.py
cd animals && ls -la

如果发现animals目录不存在或者wsgi.py缺失,那就是代码推送的问题,检查.gitignore有没有误排除了相关文件,或者确认推送的分支是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:37:49