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
原文地址:https://www.cnblogs.com/xuanxuanlove/p/9656078.html