Python无法导入平行目录模块(ModuleNotFoundError)求助
解决test.py导入src模块的问题
目录结构
src/ a.py b.py test/ test.py
可行解决方案
不用硬编码路径、不破坏目录结构的前提下,按以下步骤操作:
- 在
src和test目录下分别创建空的__init__.py文件,让这两个目录被识别为Python包,结构变为:
src/ __init__.py a.py b.py test/ __init__.py test.py
- 修改
test.py的导入逻辑,动态获取项目根目录并添加到Python路径中,代码如下:
import os import sys # 动态获取项目根目录(test目录的父级目录) project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 将根目录加入Python搜索路径 sys.path.append(project_root) # 正常导入src下的模块 from src import a from src import b
为什么之前的尝试失败
- 相对导入报错:直接运行
test.py时,它被当作顶层脚本而非包的一部分,Python无法识别相对导入的父包,因此报错。 - 仅加
__init__.py无效:没有将项目根目录加入Python的搜索路径,Python找不到src这个包。 - 硬编码系统路径不可行:而动态获取根目录的方式适配所有系统,不会出现路径兼容问题。
内容的提问来源于stack exchange,提问作者Jokubas11
相关产品推荐
相关产品推荐

