Django项目Python文件导入失败求助:ModuleNotFoundError问题排查
Django同目录模块导入失败排查与解决
核心问题分析
你遇到的ModuleNotFoundError本质是Python解释器在当前搜索路径里找不到testing模块——即便文件在同目录,也可能因为Django的导入上下文、路径配置或命名冲突导致识别失败。
解决步骤
1. 补全__init__.py文件
虽然Python 3.3+支持无__init__.py的命名空间包,但Django官方推荐每个应用目录都添加空的__init__.py文件,这能确保目录被识别为合法的Python包,避免导入异常。
2. 调整导入方式(两种可靠方案)
方案一:相对导入(推荐)
同目录下的模块用相对路径导入,明确指向当前包内的模块:
修改views.py的导入语句:
import http from django.shortcuts import render, HttpResponse from . import testing # 相对导入当前目录的testing模块 def test(request): return HttpResponse(testing.testFunction())
也可以直接导入特定函数,减少命名空间占用:
from .testing import testFunction def test(request): return HttpResponse(testFunction())
方案二:绝对导入
用应用名作为前缀,从项目根路径开始导入,避免路径歧义:
import http from django.shortcuts import render, HttpResponse from api import testing # 以应用名api作为前缀导入 def test(request): return HttpResponse(testing.testFunction())
3. 排查其他潜在问题
- 文件名拼写/大小写检查:确认
testing.py文件名完全正确,Linux/macOS系统区分文件名大小写,避免出现TestIng.py这类错误。 - 同名模块冲突:检查项目内或Python标准库中是否存在其他名为
testing的模块,若有则重命名当前testing.py(比如改为api_testing.py)。 - 验证路径配置:若以上方法无效,可在
views.py开头添加代码打印Python的模块搜索路径,确认api目录是否在列表中:
import sys print(sys.path)
如果api目录不在路径中,可临时添加(不推荐长期使用,建议排查Django运行配置):
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)))
内容的提问来源于stack exchange,提问作者James Davidson
相关产品推荐
相关产品推荐

