python 包

一个文件夹下有__init__.py文件,就是包,py2中,没有__init__就报错,__init__强制报错,py3中,__init__没有也可以,可以快速分辨
使用包的前提:必须在包的外面使用包

import bao
from bao import *
导入包使用*,是在__init__中控制
导入模块使用*,是在本模块中控制

导包就是导包下面的__init__文件,
使用包的时候,后面不能再出现'.'
from和import中间可以出现'.'

__all__ = [''],在__init__里中控制包中要导入的模块,模块中要导入的功能
绝对路径: 从包的外部往内部找
相对路径: 在包的内部文件中找其他包的文件: 
  1.在启动文件中先找到一个内部文件
  2.在这个内部文件中用from ..包名 import 内部文件名
. 当前路径
.. 父级路径
实例:
  bao的外部,一个启动文件:包
  定义一个大包:bao,在bao下设立foo,get,test包,foo下面加host文件,get下面加get_bao文件
  在host文件中调用get_bao

先执行包,找到host文件
from bao.foo import host
host找get_bao
from ..get import get_bao
在文件内部用绝对路径:
from bao.get import get_bao

将启动文件放到bao内:

import sys
启动文件在哪儿,就把当前文件的路径添加到环境变量中
当host文件为启动文件时,要把最上层包的路径添加进去
sys.path.insert(0,r'最上层包的路径')
from get import get_bao

如果用包,就写一个run文件:
把run文件和包的总目录放在同级,
尽量不要在包的内部调用,sys.path会随着文件的不同而改变

posted @ 2019-04-11 13:51  DF-包子  阅读(472)  评论(0)    收藏  举报