从其他文件夹导入Python模块时遇ImportError的解决咨询
解决相对导入报错:ImportError: attempted relative import with no known parent package
问题场景
项目结构:
/my_project /first_folder first.py /second_folder second.py
second.py代码:
def hello(): print('hello')
first.py代码:
from ..second_folder import second second.hello()
直接运行first.py时触发报错:
ImportError: attempted relative import with no known parent package
可行解决方案
方案1:以包模块形式运行
在my_project的上级目录执行以下命令,将my_project识别为Python包:
python -m my_project.first_folder.first
这种方式会让Python自动处理包的层级关系,相对导入逻辑正常生效。
方案2:切换为绝对导入并添加路径
修改first.py代码,手动将项目根目录加入Python的搜索路径,再使用绝对导入:
import sys from pathlib import Path # 将项目根目录(my_project)添加到sys.path sys.path.append(str(Path(__file__).parent.parent)) from second_folder import second second.hello()
修改后可以直接运行first.py,无需依赖外部运行路径。
方案3:将my_project转为标准Python包
在my_project目录下创建空的__init__.py文件,使其成为标准可导入包:
/my_project __init__.py /first_folder first.py /second_folder second.py
之后可以选择方案1的方式运行,或者结合方案2的路径配置使用绝对导入。
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

