Python跨文件夹导入两模块遇ModuleNotFoundError问题求助
Python模块导入问题解决方案
问题根源
从错误日志能明确看出,问题出在utilities/api.py里的导入语句:import config_reader。当你从main.py导入api时,Python会在**当前运行脚本的目录(即src/)**以及sys.path中的其他路径寻找config_reader模块,而非utilities/目录,因此抛出ModuleNotFoundError。
单独导入config_reader能正常运行,是因为你直接通过from utilities import config_reader指定了模块所在的包,Python可以正确定位到它。
解决方法
方法1:使用相对导入(推荐)
修改utilities/api.py中的导入语句,用相对路径导入同目录的config_reader:
# api.py 中的导入语句替换为 from . import config_reader
这里的.代表当前包(utilities),Python会在当前模块所在的目录下寻找目标模块。
方法2:使用绝对导入
修改utilities/api.py的导入语句,使用完整的包路径:
# api.py 中的导入语句替换为 from utilities import config_reader
同时,在utilities文件夹中创建一个空的__init__.py文件,让Python将utilities识别为合法的Python包。
额外注意事项
如果需要从不同目录运行脚本(比如直接运行test_folder/test.py),可以把src/目录添加到Python的sys.path中,比如在test.py开头添加:
import sys from pathlib import Path # 获取src目录的绝对路径 src_path = Path(__file__).parent.parent.resolve() sys.path.append(str(src_path))
这样无论从哪个目录运行脚本,Python都能找到utilities包。
内容的提问来源于stack exchange,提问作者flo
相关产品推荐
相关产品推荐

