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

Python子目录文件导入上级模块报错:ModuleNotFoundError

解决ModuleNotFoundError: No module named 'models'的问题

我来帮你搞定这个导入问题!出现这个错误的核心原因是Python默认不会将当前脚本的上级目录加入模块搜索路径——你的test_manager.py在test_utils子目录里,而models和database在它的上级目录,Python找不到这些模块完全是正常的逻辑问题,下面给你几个靠谱的解决办法:

方法1:临时修改sys.path(快速救急)

在test_manager.py的最顶部添加几行代码,手动把上级目录加入Python的模块搜索路径:

import sys
import os
# 获取当前脚本的上级目录路径并加入搜索列表
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

# 之后再正常导入你的模块
import csv
from models import TestQuestions
from database import db
from main import serendipity_app

这样Python就能定位到上级目录里的models和database模块了。

方法2:使用相对导入(更规范的包内写法)

如果你的整个项目是一个标准Python包,先确保每个目录(包括项目根目录和test_utils)都有__init__.py文件(可以是空文件,用来标识这是一个Python包)。然后修改test_manager.py里的导入语句为相对导入:

import csv
from ..models import TestQuestions
from ..database import db
from ..main import serendipity_app

⚠️ 注意:这种方式下你不能直接运行test_manager.py(直接执行脚本时相对导入会报错),必须从项目根目录作为包来调用它,比如用python -m test_utils.test_manager,或者通过main.py间接调用。

方法3:设置PYTHONPATH环境变量(全局生效)

你可以把项目的根目录添加到PYTHONPATH环境变量里,这样Python会自动搜索这个目录下的所有模块:

  • Windows:在命令行执行:
    set PYTHONPATH=C:\你的项目根目录路径;%PYTHONPATH%
    
    也可以在系统环境变量里永久添加这个路径。
  • Linux/macOS:在终端执行:
    export PYTHONPATH=/你的项目根目录路径:$PYTHONPATH
    
    如果要永久生效,把这条命令加到~/.bashrc或~/.zshrc文件里即可。

最后小提醒:建议始终从项目根目录运行main.py,这样配合上面任意一种方法,导入问题就能彻底解决啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:47:24