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

Flask子文件夹导入模块报ModuleNotFoundError,根目录可正常导入求助

Flask模块导入问题解决方案

针对你遇到的目录结构(root > app > views > tests)下,tests/test_data.py无法导入app.views.data的问题,给你几个实用解决办法:

  • 手动添加项目根目录到Python路径
    Python运行脚本时,只会把脚本所在目录和系统默认路径加入sys.path,根目录下的文件能成功导入是因为根目录在路径里,而tests目录不在。在test_data.py开头加入以下代码,把根目录添加到路径:

    import sys
    from pathlib import Path
    # 向上三级找到root目录(根据你的结构调整层级)
    root_dir = Path(__file__).parent.parent.parent
    sys.path.append(str(root_dir))
    
    # 现在可以正常导入了
    from app.views import data
    
  • 使用相对导入(包内场景)
    因为tests是views的子目录,可尝试相对导入语法,前提是把tests当作包的一部分运行(比如用模块方式启动):

    from .. import data
    

    运行时要用python -m app.views.tests.test_data,直接双击或python test_data.py会报错。

  • 配置PYTHONPATH环境变量
    运行测试脚本前,把项目根目录加到环境变量里:

    • Linux/macOS终端:
      export PYTHONPATH=/绝对路径/root:$PYTHONPATH
      python app/views/tests/test_data.py
      
    • Windows命令行:
      set PYTHONPATH=C:\绝对路径\root;%PYTHONPATH%
      python app\views\tests\test_data.py
      
  • 用测试框架自动处理路径
    如果这是测试文件,用pytest等框架的话,直接在项目根目录下执行:

    pytest app/views/tests/test_data.py
    

    pytest会自动把根目录加入Python路径,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:01:13