Python包导入报错:ModuleNotFoundError: No module named 'pack_2'
Python包导入错误排查:ModuleNotFoundError: No module named 'pack_2'
错误原因
运行main.py时,Python的模块搜索路径(sys.path)默认包含当前执行目录(即import_test/)。在pack_1/__init__.py中直接写import pack_2,Python会在顶层路径下查找pack_2,但pack_2是pack_1的子包,不在顶层搜索路径中,因此抛出找不到模块的错误。
解决方法
有两种规范的导入方式可以解决该问题:
方法1:绝对导入
使用完整的包路径明确指定pack_2是pack_1的子包,修改pack_1/__init__.py代码如下:
print('pack_1 imported') import pack_1.pack_2 print('pack_2 also imported')
方法2:相对导入
在包内部使用相对路径导入子包,用.表示当前所在的包,修改pack_1/__init__.py代码如下:
print('pack_1 imported') from . import pack_2 print('pack_2 also imported')
额外说明
pack_2/__init__.py中的import p2class可以正常工作,但更规范的写法是使用相对导入:from . import p2classp2class.py中的import pack_1是有效的,因为pack_1是顶层包,处于Python的搜索路径范围内
内容的提问来源于stack exchange,提问作者Midhun C N
相关产品推荐
相关产品推荐

