python学习笔记 day21 包的进阶
创建包
import os os.makedirs('glance/api') os.makedirs('glance/cmd') os.makedirs('glance/db') L=[] L.append(open('glance/__init__.py','w')) L.append(open('glance/api/__init__.py','w')) L.append(open('glance//api/welcome.py','w')) L.append(open('glance/cmd/login.py','w')) L.append(open('glance/cmd/__init__.py','w')) L.append(open('glance/db/__init__.py','w')) L.append(open('glance/db/bye.py','w')) map(lambda f:f.close(),L)
运行结果:
使用相对路径导入包(在其他包以及相应模块中也只能以相对路径导入)
这里需要说明. 指的当前目录(就是当前的这个py文件所在的文件夹),..值得是上一级目录(就是当前py文件所在的文件夹(这是当前目录)的上一级文件夹)
我们先来看一下各个文件中的内容:
要运行的01.py中的内容:
glance包下面的__init__,py文件:
api包下面的两个文件:
cmd包下面:
bd包下面:
接下来 在01.py中运行:
所以使用相对路径的方法也是可以的~
使用相对路径的好处就是当我们想要把glance的目录移动了,然后再运行01.py 就不行了,现在的目录结构是这样的:
也就是01.py 要运行的文件是直接放在week5下面 而glance放在day07文件夹(与01.py同级)下面,这时候我们在01.py中导入glance 是绝对不行的 我们可以在01.py中打印sys.path 发现这个路径是week5 也就是导入模块时,会在week5下面找,然而这样是找不到glance 因为glance在day07下面,所以我们可以这样:
import sys print(sys.path) from day07 import glance # 从day07下面导入glance 而day07在week5下面是可以直接被找到的 glance.api.welcome.func1()
运行结果:
然后这个时候,由于其他包下面的__init__.py文件都是按照相对路径写的只要可以找到glance 其他的就都可以找到了~
talk is cheap,show me the code