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

为何无法从上级目录导入模块?相对导入报错咨询

问题分析与解决

报错原因

你用相对导入from .. import utils失败,核心原因是直接运行coderunning.py时,Python没有将它识别为packageName(你目录里写的pacakgeName应该是拼写错误)包的一部分。

当你直接执行python folder1/coderunning.py这类命令时,Python会把这个脚本当作「顶层模块」,它的父级目录不会被视为合法的包结构,自然找不到..对应的父包路径,因此抛出ImportError。

解决方法

方法1:以包模块形式运行脚本

切换到packageName的父目录(即包含packageName文件夹的那个目录),然后用模块方式启动脚本:

python -m packageName.folder1.coderunning

这种方式会让Python将packageName识别为完整的包,相对导入逻辑就能正常生效。

方法2:改用绝对导入

如果不想改变运行方式,可以修改coderunning.py中的导入语句为绝对导入:

from packageName import utils

但要确保packageName的父目录在Python的sys.path中——要么手动通过sys.path.append()添加,要么将该父目录设为当前工作目录。

关于__future__语句的影响

完全没有影响。from __future__ import absolute_import, division, print_function只是启用Python 3的部分兼容特性,其中absolute_import仅改变默认导入行为为绝对导入,但不会干扰你显式编写的相对导入,也不是导致本次报错的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:35:32