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

Python从父目录导入模块遇ImportError: No module named test的解决方法

解决ImportError并正确导入parent.py到child.py

根据你的目录结构和已设置的PYTHONPATH,问题出在导入语句的层级处理上。先明确你的目录结构:

/mfolder/
└── A/
    ├── parent.py
    └── test/
        ├── __init__.py
        └── child.py

PYTHONPATH已经指向/mfolder,这意味着Python会将/mfolder视为模块搜索的顶级路径,A是一个顶级包,test是A的子包。

下面是两种可行的解决方法:

方法1:使用绝对导入(推荐,兼容性更好)

在child.py中直接从顶级包A导入parent:

from A import parent

这样Python会从PYTHONPATH的/mfolder下找到A包,进而导入其中的parent.py模块,完全符合你的路径设置。

方法2:使用相对导入(适用于包内部模块间的引用)

如果希望基于当前模块的位置来引用上级目录的parent.py,可以使用相对导入语法:

from .. import parent

这里的..表示当前模块(child.py)所在目录的上一级目录(也就是A目录)。不过要注意:

  • 这种方式只能在包内部使用,如果你直接运行child.py(比如python /mfolder/A/test/child.py),Python会将它视为顶级脚本,相对导入会报错。
  • 正确的运行方式是从/mfolder目录执行:python -m A.test.child,这样child.py会作为A.test包的一部分被加载,相对导入就能正常工作。

额外注意事项

  • 建议在A目录下也创建一个空的__init__.py文件,虽然Python 3.3+支持无__init__.py的命名空间包,但添加后能确保A被识别为标准的Python包,避免一些潜在的导入问题。
  • 检查你之前的导入语句,错误提示No module named test大概率是因为你尝试了错误的导入层级(比如误写了import test或者错误的包路径),替换成上面两种方式即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:30:15