包导入(import A.B.C 或者from A.B import C)
2.X,模块搜索路径:
1、程序的主目录
2、系统变量目录
3、标准库
4、.pth文件中的内容
先执行相对导入(1),后执行绝对导入(2、3、4)
存在的问题:如果用户想导入的是在包外的同名的模块,用户无法导入需要的模块,导入的是包内同名的模块
3.X,模块搜索路径
1、系统变量目录
2、标准库
3、.pth文件中的内容
直接执行绝对导入(1、2、3),不会去搜索主程序的目录
如果包内包外存在同名的模块,用户导入的都会是包外的模块
如果真的想导入包内的模块,在3.X提供了相对导入的方式:from . import c(.代表当前目录,即执行程序的目录),表示从执行程序的目录中搜索C模块
相对导入其他格式
from . import C 导入包内的C模块(A.B.C)
from .. import E 导入上级目录的E模块(A.E)
from ..E import F 导入上级目录的E模块的F属性(A.E.F)
2.X,模块搜索路径:
1、程序的主目录
2、系统变量目录
3、标准库
4、.pth文件中的内容
先执行相对导入(1),后执行绝对导入(2、3、4)
存在的问题:如果用户想导入的是在包外的同名的模块,用户无法导入需要的模块,导入的是包内同名的模块
3.X,模块搜索路径
1、系统变量目录
2、标准库
3、.pth文件中的内容
直接执行绝对导入(1、2、3),不会去搜索主程序的目录
如果包内包外存在同名的模块,用户导入的都会是包外的模块
如果真的想导入包内的模块,在3.X提供了相对导入的方式:from . import c(.代表当前目录,即执行程序的目录),表示从执行程序的目录中搜索C模块
相对导入其他格式
from . import C 导入包内的C模块(A.B.C)
from .. import E 导入上级目录的E模块(A.E)
from ..E import F 导入上级目录的E模块的F属性(A.E.F)