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

Python子文件夹测试脚本导入父目录模块相对导入报错问题咨询

问题原因

你遇到的attempted relative import with no known parent package报错核心原因是:直接运行单个Python脚本(python testScript.py)时,Python会将脚本所在的testFolder目录作为顶级工作目录,不会识别上层的importTest包结构,哪怕存在__init__.py也无法触发相对导入的包识别规则。同时你当前的相对导入语法也有误。

修复方案

方法1:以模块形式运行脚本(推荐,无需修改代码路径逻辑)

  1. 先修改testScript.py中的导入语句,修正相对导入语法:
# 两个点代表定位到当前文件的父目录(即importTest目录),直接导入该目录下的tobeimported模块
from ..tobeimported import ToBeImported

def runTest():
    item = ToBeImported()

if __name__ == '__main__':
    runTest()
  1. 切换终端工作目录到importTest的上层文件夹,执行以下命令运行脚本:
    python -m importTest.testFolder.testScript
    这种方式会让Python自动按照包结构加载模块,相对导入可正常生效。

方法2:动态添加父目录到模块搜索路径(适合直接运行单个脚本的场景)

不需要用相对导入,直接在testScript.py开头添加路径配置代码:

import sys
from pathlib import Path
# 将当前文件的父目录的父目录(即importTest目录)加入Python模块搜索路径
sys.path.append(str(Path(__file__).parent.parent.resolve()))

# 直接导入模块即可
from tobeimported import ToBeImported

def runTest():
    item = ToBeImported()

if __name__ == '__main__':
    runTest()

修改完成后直接在testFolder目录下运行python testScript.py即可正常执行。

方法3:使用测试框架(适合项目级测试场景)

如果是项目测试用途,直接用pytest等测试框架,框架会自动将项目根目录加入模块搜索路径,你只需要将导入语句写为:
from importTest.tobeimported import ToBeImported
之后直接在项目根目录运行pytest命令即可自动识别并运行测试脚本,不需要额外处理路径配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:57:03