Django自定义命令执行时报ModuleNotFoundError,请求排查错误原因
Django自定义命令
send_birthday_emails导入报错排查 1. 检查App注册与模块结构
- 确认
EVENTS已添加到项目settings.py的INSTALLED_APPS列表中,格式为'EVENTS'(注意大小写需匹配实际目录名) - 检查
EVENTS目录、app/management、app/management/commands这几个目录下是否都存在__init__.py文件(空文件即可,Python需要它识别为可导入模块)
2. 修正模型导入路径
IDE自动补全的路径可能引入了项目根目录名(Employeetable),不符合Django导入规范。将导入语句修改为直接从App名导入:
from EVENTS.models import Event, EmailTemplate
如果实际App目录是小写events,则对应改为from events.models import Event, EmailTemplate(Python模块名大小写敏感)
3. 确认命令执行路径
确保在项目根目录(即manage.py所在的目录)下执行命令:
python manage.py send_birthday_emails
若在子目录执行,Python无法识别项目模块路径,会导致导入失败
4. 排查Python路径(可选)
若以上步骤无效,可在自定义命令开头添加代码打印当前Python路径,确认项目根目录是否在路径中:
import sys print(sys.path)
执行命令后查看输出,若项目根目录不在列表中,优先保证在根目录执行命令(不推荐手动修改路径)
内容的提问来源于stack exchange,提问作者user3521180
相关产品推荐
相关产品推荐

