Python学习之Python中包的管理

python包的结构就是文件夹结构,如要想让以下文件夹结构变成python包结构

只需在每个文件夹下添加一个__init__.py。

python  __init__.py在包里起一个比较重要的作用
要弄明白这个问题,首先要知道,python在执行import语句时,到底进行了什么操作,按照python的文档,它执行了如下操作:
1步,创建一个新的,空的module对象(它可能包含多个module);
2步,把这个module对象插入sys.module中
3步,装载module的代码(如果需要,首先必须编译)
4步,执行新的module中对应的代码。

也就是说在导入一个包时,python首先去这个包下加载__init__.py.根据这个__init__.py里面规定的导入情况,再去导入其他模块。

比如你想加载exer1.py模块,你只需在__init__.py里面写入from root.exer1.py import * 就能导入exer1.py模块.

需要注意的是:

1,引入同级模块需要显示导入即用from ... import ... ,用import ... 会报错。且必须要用 ‘.’明确他们的层级关系

2,引入子包需要用import ...引入,且必须要用 ‘.’ 明确他们的层级关系

假如在exer1下有个addf 函数

在交互模式下,想调用exer1下的函数,首先

import root;然后

root.addf();就行了。

如果要在exer11模块下引入同级模块,只需在exer12中添加:

import root.pack1.exer12 或者 from root.pack1.exer12 import *

如果要在exer1模块下引入子包下的其他模块,只需在exer1中添加:

import root.pack1.exer11 或者 from root.pack1 import exer11

另外还有一个pythonPath 这个知识点:

pythonpath 就是python在装载模块时加载路径,自已可以设置。

当你想引入其他磁盘下的py文件,你就需要往pythonPath 中设置路径。

首先导入import sys,然后

sys.path.insert(0,路径);或者sys.path.append('路径');

 

posted @ 2016-01-04 16:07  Program_青菜  阅读(3095)  评论(0编辑  收藏  举报