解决从父文件夹导入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
相关产品推荐
相关产品推荐

