说明:如果需要跨越多个文件层级进行导入,只需要使用多个句点即可。 PEP328建议相对层级不超过两层
导入注意项(这点很重要,需要反复揣摩且测试)
- 如果是绝对导入,一个模块只能导入自身的子模块或和它的顶层模块同级别的模块及其子模块
- 如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块
- 如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径,如果一个模块是被其他模块导入的,则它存在层次结构,但也无法导入与顶层模块同级别的模块
- 所谓的包,就是包含 __init__.py 文件的目录
参考: https://www.jianshu.com/p/5cc20b88bcf4
importlib导入
函数体说明
importlib.import_module(name, package=None)
name: 1、绝对路径导入,例如name=pkg.mod
2、相对路径导入,例如name='..mod',此时需要定义package参数,package='pkg.subpkg'