复习之相对导入和绝对导入
一、模块与包的使用
模块:
一个py文件,被别的py文件导入使用,这个py文件称之为模块,运行的这个py文件称之为脚本文件
包:
一个文件夹下有__init__.py
二、绝对导入和相对导入
再次强调:一定要分清楚谁是执行文件!!!
模块的导入全部以执行文件为准
绝对导入
from mymd.aaa.bbb.ccc.ddd import name # 可以精确到变量名
from mymd.aaa.bbb.ccc import ddd # 也可以精确到模块名
ps:套路就是按照项目根目录一层层往下查找
根据执行文件的路径,如果执行文件的导入文件中又有导入文件,而第二个导入文件不在根目录下,是找不到该文件的
相对导入
.在路径中表示当前目录
..在路径中表示上一层目录
..\..在路径中表示上上一层目录
不在依据执行文件所在的sys.path 而是以模块自身路径为准
from . import b
相对导入只能用于模块文件中 不能在执行文件中使用
ps:相对导入使用频率较低 一般用绝对导入即可 结构更加清晰
总结
- 0 导入模块有相对导入和绝对导入,绝对的路径是从环境变量开始的
- 1 导入任何模块,如果使用绝对导入,都是从环境变量开始导入起
- 2 脚本文件执行的路径,会自动加入环境变量
- 3 相对导入的话,是从当前py文件开始计算的
- 4 以脚本运行的文件,不能使用相对导入,只能用绝对导入