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

如何导入上级两级的包?解决ImportError相对导入无父包问题

解决相对导入错误:ImportError: attempted relative import with no known parent package

项目结构

project
├── __init__.py
├── package1.py
├── package2.py
└── testing
      ├── test_some_class.py
      ├── __init__.py

当在test_some_class.py中使用from ..package1 import SomeClass尝试导入package1.py中的SomeClass时,会触发错误:

ImportError: attempted relative import with no known parent package

可行的解决方法

  • 方法一:手动添加项目根目录到Python路径
    在test_some_class.py的开头加入以下代码,将项目根目录(project文件夹)添加到Python的模块搜索路径中,之后即可使用绝对导入:
import sys
import os
# 获取当前脚本所在目录的上级目录(即project目录)
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

from package1 import SomeClass
  • 方法二:以包的形式运行测试脚本
    切换到project目录的父目录下,使用Python的-m参数以模块方式运行测试脚本,这样Python会将project识别为一个合法的包,相对导入就能正常生效:
python -m project.testing.test_some_class
  • 方法三:使用绝对导入
    确保project目录已经在Python的搜索路径中(比如将其加入环境变量PYTHONPATH),然后直接使用绝对导入语句:
from project.package1 import SomeClass

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:44:54