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

已创建__init__.py,为何仍出现相对导入错误:无已知父包

相对导入报错ImportError: attempted relative import with no known parent package的原因

你创建__init__.py标记目录为包的操作是正确的,但触发错误的核心原因是直接运行包内的foo.py脚本文件,具体逻辑如下:

  1. 当执行python foo.py时,Python会把foo.py当作顶层脚本,而非某个包的子模块。此时该脚本的__package__属性为空字符串,Python无法识别它所属的父包。
  2. 相对导入(比如from .bar import ...)的本质是基于当前模块在包结构中的位置定位目标模块,必须依赖父包的上下文才能解析。没有父包上下文时,Python自然无法处理这种相对路径的导入。

正确的使用方式

要让相对导入生效,你需要将这个目录作为包的一部分来使用,比如:

  • 切换到该目录的上级目录,执行python -m 包目录名.foo(把包目录名替换成你这个文件夹的实际名称)
  • 或者在包外部的另一个脚本中,通过from 包目录名 import foo的方式导入使用

你的目录与代码参考

目录结构:

$ ls
__init__.py foo.py bar.py

foo.py内容:

from .bar import MyExampleClass

thing = MyExampleClass()

bar.py内容:

class MyExampleClass():
    pass

触发的错误:

ImportError: attempted relative import with no known parent package

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 13:44:52