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

Python绝对导入与相对导入问题:目录结构下导入报错解析

Python模块导入问题解答

目录结构回顾

Assignments
├── Assignment1
│       ├── Assignment-1.pdf
│       └── assignment1.py
└── Methods
    ├── __init__.py
    └── primality.py

绝对导入语句

绝对导入以项目根目录(即Assignments)为起点,需要确保该目录在Python的搜索路径中。

直接使用以下语句导入目标函数:

from Methods.primality import func  # 将func替换为你实际要导入的函数名

如果直接运行assignment1.py时提示找不到Methods模块,可在脚本开头添加以下代码,手动把项目根目录加入搜索路径:

import sys
import os
# 获取当前脚本的父目录的父目录(即Assignments目录)
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

相对导入语句

相对导入基于当前脚本所在的模块位置,正确语句为:

from ..Methods.primality import func

注意:相对导入不能在直接运行脚本时生效,必须把脚本当作包的一部分来运行。

报错原因及解决

你直接运行assignment1.py时,Python会将其视为独立的顶级脚本,而非某个包的子模块,此时不存在所谓的“父包”,因此触发ImportError: attempted relative import with no known parent package错误。

解决方法:从Assignments目录的父目录下,用模块方式运行脚本,命令如下:

python -m Assignments.Assignment1.assignment1

这样Python会把整个Assignments当作一个包,相对导入就能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:00:18