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

Django项目测试时__init__.py引发的模块导入问题求助

Django测试找不到用例+删除__init__.py后导入错误的排查方案

一、为什么删除app/app/__init__.py会触发导入错误?

虽然Python 3.4+支持无__init__.py的namespace package,但Django的模块加载逻辑对这种场景兼容性有限:

  • Django解析INSTALLED_APPS中配置的app.app这类嵌套包时,依赖常规包结构(即每个层级目录都要有__init__.py),namespace package无法被Django的导入机制正确识别为可加载的应用模块。
  • PyCharm的代码识别逻辑和终端运行时的Python路径逻辑不同:PyCharm会自动将项目根目录加入sys.path并智能识别包结构,但终端运行Django时,若未正确配置路径,无__init__.py的嵌套目录无法被解析为合法的Python包。

二、测试找不到0个用例的排查方向

先恢复app/app目录下的空__init__.py解决导入错误,再针对测试问题逐一排查:

  • 检查测试文件规范:测试文件需命名为tests.py,或放在tests子目录下(目录需带__init__.py),且测试类必须继承自django.test.TestCase。
  • 指定app运行测试:尝试运行python manage.py test app.app,如果能找到测试用例,说明是Django全局扫描测试模块的配置问题;如果还是找不到,检查测试文件是否有语法错误或未正确定义测试类。
  • 确认Python路径:终端执行python -c "import sys; print(sys.path)",查看项目根目录是否在路径列表中。若不在,可通过设置环境变量export PYTHONPATH=/path/to/your/project,或改用python -m manage test运行(-m参数会自动将当前目录加入sys.path)。
  • 检查INSTALLED_APPS配置:确保settings.py中INSTALLED_APPS已正确添加app.app,否则Django不会扫描该应用下的测试模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:05:15