Django数据库迁移报错:ModuleNotFoundError: No module named 'quickstart'
解决Django migrate/makemigrations报错ModuleNotFoundError: No module named 'quickstart'
你遇到的问题核心是Python无法找到quickstart模块,而migrate/makemigrations命令执行时会加载所有Django app的代码(包括mainApp/views.py),所以导入失败直接打断了迁移流程。下面是具体的排查和解决步骤:
1. 检查quickstart模块的位置与结构
首先确认你的项目目录结构是否正确,quickstart需要放在Python能识别的路径下,并且是合法的Python包:
- 正确的项目结构示例(假设
quickstart是你自己的模块/Google Gmail API示例代码):your_django_project/ manage.py your_django_project/ # 项目配置目录 settings.py urls.py ... mainApp/ # 你的业务app views.py models.py ... quickstart/ # 必须和mainApp同级,或者在Python路径能覆盖的位置 __init__.py # 关键!必须有这个文件(可以是空文件),否则Python不认为这是一个可导入的包 gmail_api_functions.py # 你的Gmail API相关代码 ... - 如果
quickstart是从Google官方示例下载的单文件(比如quickstart.py),那你需要把它放在项目根目录,或者把它所在的目录加入Python的搜索路径。
2. 修正mainApp/views.py中的导入语句
根据quickstart的位置调整导入路径:
- 如果
quickstart是和mainApp同级的包:# 导入整个模块 import quickstart # 或者导入特定功能 from quickstart import get_gmail_service - 如果
quickstart是在项目配置目录下(比如your_django_project/quickstart):from your_django_project.quickstart import get_gmail_service
3. 排查INSTALLED_APPS的错误配置
打开项目根目录下的settings.py,检查INSTALLED_APPS列表:
- 如果你错误地把
quickstart加到了INSTALLED_APPS里,但它并不是一个Django app(没有models.py、apps.py等必要文件),请把它从列表中移除——只有Django app才需要加入INSTALLED_APPS。
4. 关于syncdb的说明
你提到的syncdb命令确实已经被废弃了,从Django 1.9版本开始,所有数据库迁移操作都统一使用migrate命令,解决完上述导入问题后,直接执行:
python manage.py makemigrations python manage.py migrate
就能正常完成数据库迁移了。
内容的提问来源于stack exchange,提问作者user8163099
相关产品推荐
相关产品推荐

