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

Python跨文件夹导入模块报相对导入ImportError错误如何解决?

Python项目跨目录导入报错解决

核心问题

  • 你直接执行python var_class.py时,Python会将当前运行的文件作为独立顶层脚本处理,不会将它所在的tests文件夹识别为Python包,因此相对导入语法.context无法生效,这就是报错attempted relative import with no known parent package的根本原因。
  • 你报错信息中出现的import pierre属于代码笔误,你的context.py中实际导出的是project模块,需要先修正这个拼写问题。

可行解决方案

方法1:修改为绝对导入

直接修改var_class.py的导入逻辑,去掉相对导入语法即可:

# var_class.py
from context import project

x = project.main.Var()

context.py已经将项目根目录加入了系统路径,直接导入context就可以正常加载project模块。

方法2:以模块方式运行脚本

不修改现有导入代码的前提下,切换到外层项目根目录(存放.gitignore、README.md的那个project目录),执行以下命令:

python -m tests.var_class

使用-m参数运行时,Python会自动将当前目录加入模块搜索路径,同时将tests文件夹识别为合法包,相对导入即可正常生效。

方法3:直接用测试框架运行

如果你的var_class.py是测试用例,直接在项目根目录运行pytest即可,测试框架会自动处理路径和导入逻辑,不需要手动调整代码。

可选优化

你可以在内层project文件夹的__init__.py中添加以下内容,简化后续导入逻辑:

# project/project/__init__.py
from .main import Var

配置完成后就可以直接用x = project.Var()调用类,不需要再写project.main.Var。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:15:01