程序目录结构如下
from . import XX 和 from .. import XX 只能使用在子包中,例如上面的例子中,程序最外层是主程序app.py,程序有一个子包pack1,pack1下有a.py 和b.py两个文件,pack1下面有子包pack2,pack2下有c.py
#a.py
def f1():
print("aaaaaaaaaaaaaa")
#--b.py
from . import a
def zz():
a.f1()
#--c.py
from .. import a
def cc():
a.f1()
可以看到b.py和c,py 分别使用了import . 和import ..的用法
在app.py 中分表调用b和c的函数
# app.py
import pack1.b as b
import pack1.pack2.c as c
b.zz()
c.cc()
注意的是: 只能在app.py 同级的位置调用使用了import .和 import ..的b和c,也就是在库pack1的外面调用。
如果想单独调试b和c ,此时是不允许在b和c文件中使用if __name__=="__main__"的方式进行调试的
那么在b.py 中是否允许使用使用 from .. import d 来调用的d文件呢
不允许,因为d.py 和app.py 主程序处于同一层级,超过了pack1包的范围