Django拆分settings为生产/开发环境后出现ModuleNotFoundError如何解决?
问题排查结论
你的猜测不正确,该报错和AUTH_USER_MODEL配置无关,核心原因是拆分settings目录后,base.py中的项目根目录计算错误,导致apps文件夹没有被正确加入Python模块搜索路径。
错误原因说明
单settings文件阶段,你的settings.py存放在core目录下,Path(__file__).resolve().parent.parent 计算得到的是项目根目录(即包含apps、core、media文件夹的上层目录)。
拆分settings后,base.py移动到了core/settings/子目录下,原有代码计算出的BASE_DIR实际是core目录,不是项目根目录,因此拼接出来的core/apps路径并不存在,Python无法搜索到apps下的各个应用模块,才会依次抛出找不到account、address的报错。
修复方案
修改base.py中的BASE_DIR计算逻辑,向上多回溯一层即可:
# 原有代码(错误) # BASE_DIR = Path(__file__).resolve().parent.parent # 修改后的代码(正确) BASE_DIR = Path(__file__).resolve().parent.parent.parent
额外检查项
如果修改后仍有报错,请确认apps文件夹下存在空的__init__.py文件,否则Python不会将apps识别为可导入的包。
内容的提问来源于stack exchange,提问作者AlexisLP
相关产品推荐
相关产品推荐

