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

Django执行makemigrations报错:ModuleNotFoundError: No module named 'livros'

解决Django makemigrations报错ModuleNotFoundError: No module named 'livros'

问题分析

从你提供的代码和报错信息来看,核心问题有两个:

1. 配置文件语法错误

INSTALLED_APPS列表未正确闭合,且你把模型代码直接写在了配置代码中间,导致Python无法正常解析模块结构,进而触发找不到livros模块的错误。

2. 应用结构可能不规范

如果livros是你自定义的Django应用,需确保它的目录结构符合Django要求,且已正确创建。

修复步骤

步骤1:修正配置文件语法

在项目的settings.py中,INSTALLED_APPS必须是完整闭合的列表,模型代码要放在livros应用的models.py文件中,不能和配置代码混写。

正确的INSTALLED_APPS配置:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'livros',  # 注意结尾逗号和列表闭合
]

步骤2:确保livros应用结构合规

  1. 若还未创建livros应用,先通过命令生成:
python manage.py startapp livros

执行后会生成标准的应用目录:

livros/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py
  1. 将你的模型代码移到livros/models.py中,同时修正缩进(Python对缩进要求严格):
from django.db import models

class Livros(models.Model):
    nome = models.CharField(max_length=100)
    autor = models.CharField(max_length=30)
    co_autor = models.CharField(max_length=30)
    data_cadastro = models.DateField()
    emprestado = models.BooleanField(default=False)
    nome_emprestado = models.CharField(max_length=30)
    data_emprestimo = models.DateTimeField()
    data_devolução = models.DateTimeField()
    tempo_duração = models.DateField()

步骤3:重新执行迁移命令

回到项目根目录(包含manage.py的目录),运行:

python manage.py makemigrations
python manage.py migrate

额外提示

  • 若livros/apps.py中定义了LivrosConfig,也可以用完整路径注册应用:'livros.apps.LivrosConfig',这是更规范的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:03:20