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

Python相对导入报错:ImportError: attempted relative import beyond top-level package

解决Python相对导入报错ImportError: attempted relative import beyond top-level package

错误原因

直接运行queries.py时,Python会将该脚本所在目录视为顶级包,此时用..进行相对导入会超出这个顶级范围,触发报错。相对导入仅适用于将脚本作为包的一部分运行的场景,而非单独作为顶层脚本执行。

可行解决方案

方案1:使用绝对导入(推荐)

通过动态添加项目根目录到Python搜索路径,实现可靠的绝对导入:

import sys
from pathlib import Path

# 获取项目根目录(queries目录的父级目录)
project_root = str(Path(__file__).parent.parent)
# 将根目录加入Python搜索路径
sys.path.append(project_root)

# 绝对导入目标类
from entities.Reservation import Reservation

这种方式不受运行位置限制,路径处理更灵活。

方案2:以包的形式运行脚本

确保entities和queries目录下都存在__init__.py文件(Python 3.3+可省略,添加后更符合包规范),然后在项目根目录下执行:

python -m queries.queries

此时Python会将项目根目录视为顶级包,原有的相对导入from ..entities import Reservation即可正常工作。

修复你第二种尝试的问题

你之前写的sys.path.append('..entities/')存在路径格式错误,正确写法应为../entities,更推荐用Path处理路径:

import sys
from pathlib import Path

sys.path.append(str(Path(__file__).parent.parent / "entities"))
from Reservation import Reservation

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:33:08