一个 Python 包就是一个包含多个 Python 模块的目录。
你可以把它想象成一个文件夹 ,这个文件夹里放了很多 .py 文件(模块),并且还有一个特殊的标识文件 __init__.py。
-
模块 :一个
.py文件就是一个模块,里面可以包含函数、类、变量等。 -
包 :一个包含
__init__.py文件和多个模块的目录。包还可以包含子包(子目录),从而形成一个层次化的结构。
创建包
让我们通过一个例子来创建一个名为 my_package 的包。
步骤 1:创建目录结构
首先,在项目文件夹中创建如下目录和文件:

步骤 2:编写模块代码
在 module1.py 中:
def test1():
print("test module1")
在module2.py中:
def test2():
print("test module2")
使用方法,相对之前的导入方式,前面要加上包名
导入整个模块:import 包名.模块名
import my_package.module1
import my_package.module2
my_package.module1.test1()
my_package.module2.test2()
'''
输出;
test module1
test module2
'''
导入模块中指定成员:from 包名 import 模块名.成员名
from my_package import module1
from my_package import module2
module1.test1()
module2.test2()
__init__.py 文件
只要一个目录里有这个文件,Python 就会把这个目录当作一个包。
-
它可以是一个空文件。
-
它也可以包含包的初始化代码,或者定义
__all__列表来控制from package import *的行为。 -
它本身也是一个模块,其模块名就是包名(
mypackage)。
在init.py文件里控制暴露的模块,通过all=[]指定
__all__ = ['module1']
如下,导入所有模块时,使用module2会报错