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

Python从子文件夹导入模块遇ImportError:相对导入无已知父包

Python相对导入报错问题解决

问题描述

项目文件夹结构如下:

project\
    main_code.py
    code\
         __init__.py
         s_utils.py

    data\

在main_code.py中执行以下代码:

import os 
os.chdir('absolute path to project folder')
from .code import s_utils

触发错误:

ImportError: attempted relative import with no known parent package

问题原因

相对导入(带.的写法)是Python包内部模块间的导入规则,要求当前脚本是包的组成部分而非独立顶层脚本。直接运行main_code.py时,Python会将其识别为独立的顶层脚本,不会把它归到project包下,自然找不到对应的父包,因此抛出错误。

解决方案

方案1:改用绝对导入

既然已经通过os.chdir切换到项目根目录,此时项目根目录会被加入Python的搜索路径,直接使用绝对导入即可:

import os 
os.chdir('absolute path to project folder')
from code import s_utils

方案2:将项目作为包运行

在项目的父目录下,用模块方式运行main_code.py,让Python把project当作包,main_code.py作为包的子模块,此时相对导入就能正常生效:

python -m project.main_code

方案3:添加项目路径到sys.path(更稳妥)

不依赖目录切换,直接把项目根目录添加到Python的搜索路径中,避免目录切换带来的潜在影响:

import sys
sys.path.append('absolute path to project folder')
from code import s_utils

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:28:10