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

Django单元测试出现ModuleNotFoundError: No module named 'JoParis.JoBooking'求助

Django单元测试导入CustomUser时出现ModuleNotFoundError的原因及解决办法

错误原因

  1. 绝对导入路径错误:Django运行测试时,会自动把包含manage.py的项目根目录加入Python路径。你用from JoParis.JoBooking.models import CustomUser,是把外层项目目录JoParis当成了Python包的一部分,但实际上JoBooking本身就是顶级可导入的应用包,不需要额外加外层目录名。
  2. 相对路径导入的结构问题:如果用相对路径导入失败,大概率是测试文件的位置不对——测试文件必须放在JoBooking应用下的tests目录里,且该目录必须有__init__.py,否则相对路径无法识别同应用下的模块。

解决方法

方法1:修正导入语句

直接使用应用包名作为导入起点,不需要带项目目录名:

from JoBooking.models import CustomUser

如果测试文件本身就在JoBooking/tests目录下,用相对路径更简洁:

from .models import CustomUser

方法2:确认项目结构与运行路径

  • 确保你的项目是标准Django结构:
    JoParis/
    ├── JoParis/       # 项目配置包
    │   ├── __init__.py
    │   ├── settings.py
    │   └── urls.py
    ├── JoBooking/     # 业务应用包
    │   ├── __init__.py
    │   ├── models.py
    │   ├── tests/
    │   │   ├── __init__.py
    │   │   └── test_custom_user.py
    │   └── views.py
    └── manage.py
    
  • 必须在包含manage.py的项目根目录下执行测试命令:
    python manage.py test
    # 或者用pytest
    pytest
    
    这样Django才能正确识别应用包的位置,避免路径找不到的问题。

快速验证导入是否正常

在项目根目录下启动Python交互环境,测试导入语句是否生效:

python

然后输入:

from JoBooking.models import CustomUser

如果没有报错,说明路径没问题,直接把测试文件里的导入语句改成这个即可。

内容的提问来源于stack exchange,提问作者kiona H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:52:35