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

解决从父文件夹导入Python模块时的ModuleNotFoundError问题

解决跨目录模块导入问题

方法1:修改sys.path(快速临时方案)

在a.py(或b.py)中,将parent_folder的路径添加到Python的模块搜索路径。由于a.py位于parent_folder/folder_1,上级目录就是parent_folder,直接添加相对路径..即可:

import sys
sys.path.append('..')  # 指向parent_folder目录
from C import my_func

list_a = my_func()

如果担心相对路径的兼容性,也可以替换成parent_folder的绝对路径(比如/Users/xxx/parent_folder),但相对路径更灵活。

方法2:将parent_folder转为Python包(规范长期方案)

在parent_folder下创建一个空的__init__.py文件,让Python将其识别为可导入的包:

parent_folder
   | - __init__.py  # 新增空文件
   | - folder_1
           |- a.py
   | - folder_2
           |- b.py
   | - C.py  

方式A:绝对导入

确保parent_folder在Python的搜索路径中(比如运行代码时的工作目录是parent_folder的上级目录,或手动添加路径到sys.path),然后用绝对导入:

from parent_folder.C import my_func
list_a = my_func()

方式B:相对导入(仅模块方式运行有效)

从parent_folder目录下,以模块方式运行a.py(执行命令python -m folder_1.a),可以用相对导入:

from ..C import my_func
list_a = my_func()

注意:直接运行a.py(比如python a.py)无法使用相对导入,会触发“Attempted relative import in non-package”错误。

之前尝试失败的原因

  • 尝试1/2:parent_folder不在Python默认的模块搜索路径中,所以无法识别为可导入模块。
  • 尝试3:sys.path.append('../parent_folder')路径错误,a.py所在的folder_1上级就是parent_folder,添加../parent_folder会指向parent_folder的上级目录,导致路径不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:10:05