1.代码
# 1.主入口文件,对Python文件进行运行
# 2.顶级包和可执行文件的位置有关
# print(__package__) # 直接打印,为none,此时的main不属于任何一个包
# 3.但对于main下引入的子包 (这里以绝对路径导入)
import package2.package4.m2
# from package2.package4.m2 import m
# 4.绝对路径和相对路径
# 4.1 绝对路径导入:通过顶级包,以点的方式连接,逐级往下到引用的模块的引入方式 (注意:绝对路径必须从顶级包开始,不然就会报错)
# 4.2 相对路径导入:
# 4.2.1 . 一级 .. 两级 ... 三级
# 4.2.2 但在入口文件中是不能使用 相对路径的
# 4.2.3 使用from导入的方式,虽然避免了 . 的报错,但会有其它的报错
# 4.2.4 因为使用相对路径 会根据 当前内置的模块变量 __name__ 来定位,而mian.py运行时,他的 __name__ 就比那长了 __main__ ,所以就找不到了
# 4.2.5 所以入口文件只能用绝对路径
# 4.2.6 如果想在运行时,使用相对路径,可以进入main.py 的上一级,在上一级 使用 'python -m demon.main' 这样就会正常
# 5.
# 5.1 对于package4中使用相对路径导入m3.py就是可以的,打印结果都是 package2.package4 ,因为m2.py和m3.py的顶级包都是package2并且他们都在package4包下
# 5.2 引用不能超过顶级包 (例如:在m2中引入了m5这个超过顶级包的存在,就会报 ’attempted relative import beyond top-level package‘)
(备注:以上内容来自七月老师的学习笔记,仅作为学习使用)