Django执行makemigrations报错:No module named 'local_settings'
解决Django导入local_settings模块失败的问题
问题分析与修复步骤
1. 修正导入方式(核心问题)
你当前使用的是绝对导入from local_settings import *,但Python在Django运行环境下,可能不会将settings.py所在的目录优先加入模块搜索路径。改为相对导入即可解决:
# Set DEBUG based on the environment DEBUG = True if DEBUG: from .local_settings import * # 前缀"."表示当前目录下的模块 else: from .production_settings import * # 注意:你代码里写的是prod_settings,但实际文件名是production_settings.py,必须统一
2. 统一文件名与导入语句
你的代码中生产环境导入的是prod_settings,但实际文件名为production_settings.py,这会导致生产环境运行时同样出现模块找不到的错误,必须将两者统一:
- 要么把文件名改为
prod_settings.py - 要么把导入语句改为
from .production_settings import *
3. 检查文件名拼写与大小写
确认local_settings.py的拼写完全正确,无字母遗漏或大小写错误(Linux/macOS系统严格区分文件名大小写,比如Local_Settings.py和local_settings.py会被识别为不同文件)。
4. 显式指定settings模块运行命令
如果你的项目结构特殊,运行manage.py时需要显式指定settings模块路径:
./manage.py makemigrations --settings=你的项目名称.settings
5. 强制将当前目录加入Python搜索路径
如果以上方法都无效,可以在settings.py开头添加以下代码,确保Python能找到同目录下的模块:
import os import sys # 将settings.py所在目录加入Python模块搜索路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
内容的提问来源于stack exchange,提问作者user22257988
相关产品推荐
相关产品推荐

