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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:05:34