模块包
在Python中可以使用包来管理多个模块。使用Python中的模块包可以通过路径导入模块。
使用包的好处在于可以有效避免名字冲突,便于包的维护管理。
1、包的组成
包可以看成是处于同一目录中的模块。在Python中首先使用目录名,然后使用模块名导入所需要的模块。
在包的每个目录中都必须包含一个名为"__init__.py"(init的前后均有两条下划线)的文件。"__init__.py"可以是个空文件,
仅用于表示改目录为一个包。
"__init__.py"的主要用途是设置"__all__"变量以及包含包初始化所需要的代码。对于在导入包内所有名字时在from中使用"*"
通配符的情况,在"__init__.py"设置"__all__"变量可以保证名字的正确导入。一个简单的Python包的目录组成如下:
|A
--|__init__.py
--|B
--|__init__.py
--|a.py
--|C
--|__init__.py
--|a.py
--|b.py
如果需要导入B目录中的a.py模块,可以使用如下语句
from A.B import a # 使用from导入模块
import A.B.a # 使用import导入模块
有了包的概念就可以很好的解决模块查找路径的问题。只要将所有的模块放在当前目录中的某一文件夹内,然后在该文件夹中新建
一个空的"__init__.py"文件即可,而不必像前边的例子将子目录的路径添加到sys.path中。
2、包的内部引用
Python包中的模块也可能需要相互引用。对于上面的包结构中位于C目录中的b.py,如果要引用同样位于C目录中的a.py可以使用如下语句
import a
如果位于C目录中的b.py要引用位于B目录中的a.py,则需要使用如下语句。
from A.B import a