Django项目导入expenseswebsite.userpreferences报ModuleNotFoundError求助
导入错误原因
- 导入路径配置错误:从你给出的项目目录结构看,
userpreferences应用与expenses应用为同级目录,都存放在manage.py所在的根级expenseswebsite文件夹下。Django 运行时默认以manage.py所在目录作为 Python 模块搜索的根路径,你所写的expenseswebsite.userpreferences会将上层的expenseswebsite文件夹当作顶级 Python 包,但终端运行项目时不会默认将更上层的django-income-expense-website目录加入 Python 搜索路径,因此找不到对应模块。 - PyCharm 无报错是因为 IDE 自动将打开的项目根目录标记为源根(Sources Root),提前加入了 IDE 内的 Python 路径,因此可以识别该导入路径,但终端运行时不会继承这个 IDE 专属配置,因此触发报错。
修复方案
把 expenses/views.py 中的对应导入语句修改为以下内容即可:
from userpreferences.models import UserPreference
额外注意事项
- 请确认
userpreferences已经加入项目主配置目录下settings.py的INSTALLED_APPS列表中,你已经成功执行迁移,该配置大概率是正常的。 - 你
userpreferences/models.py中的__str__方法存在变量调用错误,直接写user找不到对应变量,需要修改为:
def __str__(self): return str(self.user)+'s preferences'
内容的提问来源于stack exchange,提问作者Ches_Ter
相关产品推荐
相关产品推荐

