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
相关产品推荐
相关产品推荐

